この種のループがあるとしましょう (疑似コード)
double d = 0.0
for i in 1..10 {
d = d + 0.1
print(d)
}
Cでprintf("%f", d)
私はこれを得る:
0.100000
0.200000
0.300000
...
1.000000
C++ では、次のcout << d
ようになります。
0.1
0.2
...
1
JavaでSystem.out.println(d)
これを取得します:
0.1
0.2
0.3 (in debug mode, I see 0.30000000000004 there but it prints 0.3)
...
0.7
0.799999999999999
0.899999999999999
0.999999999999999
だから私の質問はこれらです:
- この単純なコードが Java で印刷されているのに、C では正しいのはなぜですか?
- これは他の言語ではどのように動作しますか?