1 + 1 não é dois!
Quando eram crianças e gozavam com os outros que não sabiam que 1 +1 = 2 ...
Neste exercício é quase o mesmo, veja a imagem, o código percebe-se bem:
A subtração de 1.2 por 1.0 é igual a 0.2 ... Errado!
O output deste programa é 0.19999999999999996 surpreendido?
A explicação é simples, tem tudo a ver com a forma como são guardados os números. No caso em vírgula ou ponto flutuante. Assim na verdade o número 1.2 é guardado na seguinte forma binária:
00111111100110011001100110011010
e na forma de vírgula flutuante:
1.2000000476837158203125
Vemos de imediato onde está o "erro", o armazenamento de qualquer número no sistema de vírgula flutuante introduz um pequeno erro, é uma troca da precisão pela rapidez e forma de funcionamento dos computadores.
Em linguagens não tipadas como o Puthon, os números são por defeito "floats".
Pode testar qualquer número aqui:
https://www.h-schmidt.net/FloatConverter/IEEE754.html
Comentários
Enviar um comentário
Obrigado pelo seu contacto.