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.

4 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.

Anônimo disse...

Geralmente algumas calculadoras arredondam o resultado como por exemplo: 3,777 -> 3,778
Esse arredondamento depende da calculadora, em algumas o numero e arredondado para cima outros para baixo e alguns arredondam colocando se o numero for maior que 5 arredonda pra cima e menor que 5 para baixo, como no exemplo: 3,458 -> 3,459 ou 7,472 -> 7,473