1 + 1 não é dois!

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

Mensagens populares deste blogue

Python - Automatização em ISPOL

Linha do Oeste - Breve visita

AMV – Aparelhos de Mudança de Via