Erros que a maioria das linguagens modernas ainda trazem com relação a ponto flutuante

image_pdfimage_print

Algumas demonstrações simples do problema com números float:

0.1 + 0.2 === 0.3 // False
0.1 + 0.7 == 0.8 // False
(0.1 + 0.2) + 0.3 === 0.1 + (0.2 + 0.3) // False
7*0.57 // 3.9899999999999998
7*0.68 // 4.760000000000001

Motivo do problema: Não existir possibilidade de representar certas frações decimais em notação/base binária seja em 32 ou 64 bits (principal modelo hoje). Algumas notações, por questões de dízima, seriam impossíveis de serem representadas até numa quantidade imensamente grande de bits.

Teste em sua linguagem de programação preferida e se divirta. A exceção são as linguagens que corrigiram este problema “herdado” de C.

Como dito acima, é uma limitação de ‘hardware’ + limitações matemáticas neste hardware.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!