2010-03-29 21 views
47

Solo me preguntaba en php, si era posible convertir una cadena en un doble. Estoy usando un servicio web financiero que ofrece un precio como una cadena. Es realmente necesario para procesar esto como un doble y se preguntaba cómo me gustaría convertirloConvierte una cadena en una doble, ¿es esto posible?

gracias

+26

** No use el punto flotante para el código de transacción monetaria. ** – kennytm

+1

¿Qué debo hacer con él entonces? – csU

+4

enteros. Usa centavos o unidades más finas. – kennytm

Respuesta

86

Sólo tiene que utilizar floatval().

ej .:

$var = '122.34343'; 
$float_value_of_var = floatval($var); 
echo $float_value_of_var; // 122.34343 

Y en caso de que se preguntan doubleval() es sólo un alias para floatval().

Y como el otro decir, en una aplicación financiera, los valores de flotación son críticos ya que estos no son lo suficientemente precisos. P.ej. agregar dos flotantes podría dar como resultado 12.30000000001 y este error podría propagarse.

+0

Funciona muy bien en 5.4 y desactiva las advertencias de string + string en IDE – Shane

2

Use doubleval(). Pero tenga mucho cuidado con el uso de decimales en transacciones financieras y valide cuidadosamente la entrada de usuario .

13

Para matemáticas de precisión arbitraria PHP ofrece la Calculadora Binaria que admite números de cualquier tamaño y precisión, representados como cadenas.

$s = '1234.13'; 
$double = bcadd($s,'0',2); 

PHP: bcadd

+0

¡20 años trabajando con PHP y aprendiendo nuevas y divertidas funciones! +1! –

0

¿Por qué es floatval la mejor opción para la comparación de datos financieros? Las funciones de bc solo convierten con precisión cuerdas en números reales.

Cuestiones relacionadas