long double x0,x1,y0,y1; x0 = 18446744073709551615.0L; /* 2^64 - 1 */ x1 = 18446744073709551616.0L; /* 2^64 */ y0 = x0 + 1.0L; y1 = x1 + 1.0L; printf("%d\n", x0 == y0); /* false (with enough precision) */ printf("%d\n", x1 == y1); /* true (precision being lost ) */