#include <stdio.h> int main() { volatile double a = 5000000000000001.; volatile double b = 0.499755859375; printf("%.80g\n", a); printf("%.80g\n", b); printf("%.80g\n", a + b); return 0; }
5000000000000001でなく、
5000000000000002と繰り上がってしまう現象が見られる。 すなわち、IEEE 754 Std.に従っていない。
この現象が起きる原因について考察せよ。 解決策についても考察せよ。