Por ejemplo, tengo esta línea de código:Adición de un número entero a un flotador en PHP redondea el flotador a lugar 1 decimal
echo 10359023529 + 0.2137582935;
¿Por qué este retorno:
10359023529,2
en lugar de:
10359023529.2137582935
Por ejemplo, tengo esta línea de código:Adición de un número entero a un flotador en PHP redondea el flotador a lugar 1 decimal
echo 10359023529 + 0.2137582935;
¿Por qué este retorno:
10359023529,2
en lugar de:
10359023529.2137582935
Uso: bcadd()
echo bcadd(10359023529, 0.2137582935, 10);
Esa es la limitación de un valor de coma flotante. Un valor de coma flotante se almacena como un coeficiente y exponente. Tendrás mucha precisión con números pequeños, y baja precisión con números altos. Aquí hay más detalles de los que desearía: http://en.wikipedia.org/wiki/IEEE_754-2008
Conclusión: los valores altos serán muy imprecisos. Intenta usar un rango de valor pequeño.
Aquí hay más información sobre la precisión de coma flotante específicamente en lo que respecta a PHP: http://php.net/manual/en/language.types.float.php
Si realmente necesita una gran precisión y un número elevado, mira aC matemáticas (http://www.php.net/manual/en/ref.bc.php) y GMP (http://www.php.net/manual/en/ref.gmp.php).
Hay una opción oscura en php.ini
que define cuántos dígitos significativos mostrar al imprimir números en coma flotante. En mi caso se ve de la siguiente manera
; The number of significant digits displayed in floating point numbers.
; http://php.net/precision
precision = 14
Por supuesto, esto se refiere sólo a formato, no el hecho fundamental de que los números de coma flotante son inherentemente imprecisos. De acuerdo con IEEE 754, la precisión del doble es 15.95 dígitos decimales.
La precisión de salida no es el problema; el tipo de datos flotantes es solo tan preciso. – meagar
En principio, tiene razón, pero en este caso particular no superó la doble precisión. –
@ Adam Creo que lo hizo, en realidad; de lo contrario, su implementación se ha configurado específicamente para mostrar solo un lugar decimal cuando se emiten números de coma flotante, ya que el valor predeterminado es 14. – meagar
Hay una o más configuraciones de php.ini que determinan la cantidad de dígitos a imprimir. No estoy seguro de cuáles. – erisco