/ / Como posso obter uma saída com número real de dígitos na parte de ponto flutuante da função bcdiv? - php, ponto flutuante, dividir, bcmath

Como posso obter uma saída com número real de dígitos na parte de ponto flutuante da função bcdiv? - php, ponto flutuante, dividir, bcmath

O problema é que eu não sei sobre o número dedígitos na parte de ponto flutuante na saída .. Eu não posso atribuir 4 por exemplo .. pode haver 100 dígitos em ponto flutuante por exemplo n Como posso resolver isso?

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

Muito obrigado...

Respostas:

0 para resposta № 1

Na matemática de ponto flutuante você não temprecisão. É de precisão limitada, porque os computadores usam um sistema binário em vez do sistema decimal ao qual os humanos estão acostumados. Então, enquanto você e eu podemos ver facilmente 10 / 1 é exatamente 0.1, um computador vê isso como 0.1000000000000000055511151231257827021181583404541015625. É por isso que escolhemos uma precisão limitada que sentimos ser suficiente e ignoramos todas as outras coisas no final.

Vejo esta resposta para: A matemática do ponto flutuante está quebrada? para mais detalhes.


0 para resposta № 2

O código é:

# 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];

O problema é: float tem um limite específico de bytes de 4 bytes. Então mantenha isso em mente.

Por exemplo:

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

Output: 1250000000001 # no floating point.