/ / ¿Cómo puedo obtener una salida con un número real de dígitos en la parte de punto flotante de la función bcdiv? - PHP, punto flotante, dividir, bcmath

¿Cómo puedo obtener una salida con un número real de dígitos en la parte de punto flotante de la función bcdiv? - php, coma flotante, división, bcmath

El problema es que no sé el número dedígitos en la parte de punto flotante en la salida ... No puedo asignar 4 por ejemplo ... puede haber 100 dígitos en punto flotante por ejemplo n. ¿Cómo puedo resolverlo?

 bcdiv("50","3",4); //16.6666
bcdiv("50","3"); // correct output => 16.66666666666667

Muchas gracias...

Respuestas

0 para la respuesta № 1

En matemática de punto flotante no tienes exactamenteprecisión. Es una precisión limitada, porque las computadoras usan un sistema binario en lugar del sistema decimal al que estamos acostumbrados los humanos. Así que, mientras tanto, nosotros y yo podemos ver eso fácilmente. 10 / 1 es exactamente 0.1, una computadora lo ve como 0.1000000000000000055511151231257827021181583404541015625. Esta es la razón por la que simplemente elegimos una precisión limitada que creemos que será suficiente e ignoramos todas esas otras cosas al final.

Ver Esta respuesta a: ¿Es rota la matemática de punto flotante? para más detalles.


0 para la respuesta № 2

El código es:

# Suppose the value is 125.987654321012354.
$num = 1250.987654321012354;
echo $num;
$num_array = explode(".", $num);

# Floating point count.
$fCountDigit = strlen(@$num_array[1]); # Use the @ sign if there is no floating point. When the value is integer 123351
$intNumber = $num_array[0];

El problema es que: float tiene un límite específico de bytes de 4 bytes. Así que tenlo en cuenta.

Por ejemplo:

# Suppose the value is 1250000000000.987654321012354.
$num = 1250000000000.987654321012354;
echo $num;

Output: 1250000000001 # no floating point.