Tengo una sospecha de la posible causa de la falla de la calculadora de Google, prueben este programa en C:
#include <stdio.h>
#include <math.h>
int main()
{
char* a = "399999999999999";
char* b = "399999999999998";
float da = atof(a);
float db = atof(b);
printf("da = %f, db = %f\n", da, db); // para ver como se almacenan los numeros
printf("%s - %s = %f\n", a, b, da-db);
a = "500000000000002";
b = "500000000000001";
da = atof(a);
db = atof(b);printf("da = %f, db = %f\n", da, db);
printf("%s - %s = %f\n", a, b, da-db);
}
Al ejecutar este programa obtendrán como salida lo siguiente:
399999999999999 - 399999999999998 = 0.000000
500000000000002 - 500000000000001 = 0.000000
parece que en Google están usando precisión simple, es decir, números en punto flotante en 32 bits.
prueben cambiando float por double en el programa anterior, y problema resuelto.
Es un error feo, aunque no es un tremendo misterio Mr. Chips....

aunque es una gran prueba ediaz me parece que fue con sa#a hacia el mr papas fritas, te viste como husain bolt... demsotrar ser el mejor pero humillando al rival, humilde opinion.
quedo clarito con la explicacion wn... XD
@fufrufu Es cierto, que fuí pesado, con Mr Chips, pero este problema es viejo, y cada cierto tiempo aparece. Ya ha pasado con excel, con la calculadora de windows, etc.
En todo caso mi comentario era contra un tema que es bastante aburrido a estas alturas.
No comenté en contra de Mr Chips, o su capacidad intelectual, aunque como está escrito mi comentario puede ser mal interpretado, así que aprovecho de aclarar que no fue esa mi intención.
Mr Chips se la tomó personal y lanzó la pachotada de decir que "él y otros editores tecnológicos eran unos idiotas entonces".
La verdad es que escribí la demostración porque después de leer el artículo de cnet.news me quedó clarito cual era la causa más probable, y no resultó ser un misterio insoluble, ni es necesario ser un genio para darse cuenta que es lo que pasa, al contrario de lo que afirma Mr. Chips.