sábado, 30 de agosto de 2008

Bug na calculadora do Google

Como vocês provavelmente saibam, o Google pode ser usado também como calculadora. Até aí, ok. A questão é que, incrivelmente, ela possui bugs. Para a calculadora do Google, 399999999999999-399999999999998 = 0. Porém, 399999999999999-399999999999997 = 2. Quem quiser conferir, clique aqui.

Segundo meu colega Israel, esse é um erro de precisão porque a calculadora do Google não trabalha com precisão arbitrária (número infinito de dígitos) e converte o cáculo para: (3,99999999999999 * 10^14) - (3,99999999999998 * 10^14), e representa esses caras em binário, com, digamos 32 bits. Aí, em binário, a diferença entre esses caras fica na 33a casa, mas a diferença entre 399999999999999 - 399999999999997 fica ainda na 32a (a diferença é o dobro, logo, uma casa antes em binário).

Seguindo essa regra, muitos cálculos deverão dar errado na calculadora do Google.

3 comentários:

Eduardo disse...

se vc fizer:
1+1,618 ao inves de o resultado
ser 2,618, é 2,619!!!!!

Pedro Silva disse...

achei um erro testando isso:
2250+2000/12

deveria ser = 354,1666666666667

mas o android diz que é: 2416,6666

Luciano Zanuz disse...

Discordo de você, Pedro, o cálculo está correto. Primeiramente deve ser feita a divisão e depois a soma.