上級 › 0.1 + 0.2 == 0.3 が偽になる理由 › パターン5
0.1 + 0.2 == 0.3 が偽になる理由
doubleやfloatは2進数で値を表現するため、0.1や0.2のような小数を正確には表現できません。
1 #include <stdio.h> 2 #include <math.h> 3 4 int main(void) { 5 double e = 0.1 * 3; 6 if (____________________) { ^ 7 printf("equal\n"); 8 } else { 9 printf("not equal\n"); 10 } 11 return 0; 12 }
出力: not equal期待: equal
空欄を埋めてコンパイル・実行を通す
掛け算でも同じ誤差が生じます。0.1 * 3は0.3ぴったりにはなりません。
次の問題