我嘗試以下for
循環:Java語言對計算不準確嗎?
for(double i = 0.0; i<=0.001; i+=0.0001)
System.out.println(i);
而且我得到以下輸出:
0.0
1.0E-4
2.0E-4
3.0000000000000003E-4
4.0E-4
5.0E-4
6.000000000000001E-4
7.000000000000001E-4
8.000000000000001E-4
9.000000000000002E-4
我的問題是:
- 如何將這些額外的
.000000000000001
小號來了嗎? - 這些額外的數字總會出現,還是在我的代碼中存在一些問題?
- 這些錯誤是否僅在Java語言或任何其他編程語言中出現?
- 是
double
適合for
環路?
歡迎來到IEEE 754的精彩世界:p – fge
這實際上不是java的錯,但是來自於近似表示IEEE浮點數的小數部分 – BeyelerStudios
*「Java語言對計算不準確?」*> **否**。 *「任何語言的浮點/雙精度計算都不準確」*> **是**。如果您想要更高的精度,請使用[BigDecimal](https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html)。 –