Números de ponto flutuante

Números de ponto flutuante ( AKA "floats" , "doubles " ou "números reais" ) podem ser especificados utilizando qualquer uma das sintaxes seguintes :

 
$a

 
=

 
1.234

 
;

 
$a

 
=

 
1.2e3

 
;

 
$a

 
=

 
7E-10

 
;



O tamanho de um número de ponto flutuante é dependente de plataforma, sendo o máximo de ~1.8e308 com uma precisão de 14 decimais digitais um valor comum (número de 64 bits no formato IEEE).

Precisão de números de ponto flutuante

É sabido que frações simples como 0.1 ou 0.7 não podem ser convertidos em sua representação binária interna sem uma pequena perda de precisão . Isto pode causar erros confusos : por exemplo , floor( (0.1+0.7)*10 ) irá retornar 7 em vez do esperado 8 , como resultado da representação interna realmente ser algo como 7.9999999999.. . .

Isto está relacionado ao fato de que é impossível expressar , exatamente , algumas frações em notação decimal com um número finito de dígitos . Por exemplo , 1 / 3 na forma decimal se torna 0.3333333 . . . .

Então , nunca confie em resultados com números de ponto flutuante até a última casa e nunca compare números de ponto flutuante em igualdades . Se você realmente precisar de alta precisão , você pode utilizar as funções matemáticas de precisão arbitrária ou as funções relacionadas ao gmp .