執行以下代碼:
double[] myList = {1.2, 1.3, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.6, 1.2};
double total = 0;
for (double v : myList) total += v;
System.out.println("Total is: " + total); // 輸出:Total is: 11.299999999999
預期結果為 11.3,實際輸出卻是 11.299999999999。
double 型別遵循 IEEE 754 標準,存在兩類誤差:
BigDecimal 類,並以字串構造器初始化(new BigDecimal("1.2"))。String.format("%.1f", total) 或 DecimalFormat 四捨五入。理解浮點數本質,避免在金融、科學計算等敏感領域直接使用 float/double 進行精確比較。