1、double 或者 float 存在的精度問題
當計算 1.03 - 0.42 時,按照正常得出的答案應該是 0.61
System.out.println(1.03 - 0.42 );
但是實際結果去确實 0.6100000000000001
0.6100000000000001
2、使用 BigDecimal 改造
public static void subtract() {
// 執行個體化
BigDecimal num1 = new BigDecimal(1.03);
BigDecimal num2 = new BigDecimal(0.42);
/*
* setScale(int newScale, int roundingMode)
* 參數一:newScale 保留小數點幾位
* 參數二:roundingMode 小數點保留的方式,比如 BigDecimal.ROUND_HALF_UP 就是四舍五入
*/
BigDecimal result = num1.subtract(num2).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(result);
}
0.61