I ran the same C program on three machines. Same code. Same inputs. Three different answers. Here's exactly why The Experiment #include int main() { long double x = 0.1L + 0.2L; printf("%.20Lf\n", x); unsigned char *p = (unsigned char *)&x; for (int i = 0; i sizeof(x); i++) printf("%02x ", p[i]); printf("\n"); return 0; } Three machines. All running the same binary-equivalent logic: