Ich tat dies Nur für Tritte (also, nicht genau eine Frage, ich kann sehen, die Downmodding passiert bereits), aber anstelle von Googles neu gefunden inability zu tun mathcorrectly (überprüfen Sie es! Nach google 500,000,000,000,002 - 500,000,000,000,001 = 0), Ich dachte mir, ich würde das Folgende in C versuchen, um ein wenig Theorie zu machen.Der Google Calculator-Glitch, könnte float vs. double ein möglicher Grund sein?
int main()
{
char* a = "399999999999999";
char* b = "399999999999998";
float da = atof(a);
float db = atof(b);
printf("%s - %s = %f\n", a, b, da-db);
a = "500000000000002";
b = "500000000000001";
da = atof(a);
db = atof(b);
printf("%s - %s = %f\n", a, b, da-db);
}
Wenn Sie dieses Programm ausführen, erhalten Sie die folgenden
399999999999999 - 399999999999998 = 0.000000
500000000000002 - 500000000000001 = 0.000000
Es scheint wie Google einfache 32-Bit-Floating-Präzision (der Fehler hier) verwendet, wenn Sie Schwimmer für Doppel in dem Schalter Über dem Code beheben Sie das Problem! Könnte das sein?
/mp