浮點運算的經典案例是貨幣運算,涉及類BigDecimal。
代碼:
package zero;
import java.math.BigDecimal;
public class AccuratelyFloat {
public static void main(String[] args) {
double money=2.0;
double price=1.1;
double result=money-price;
System.out.println("非精確計算");
System.out.println("剩餘金額:"+result);
//精確浮點的解決方法
BigDecimal money1=new BigDecimal("2.0");//現有金額
BigDecimal price1=new BigDecimal("1.1");//商品價格
BigDecimal result1=money1.subtract(price1);
System.out.println("精確計算");
System.out.println("剩餘金額:"+result1);
}
}
運行結果:
非精確計算
剩餘金額:0.8999999999999999
精確計算
剩餘金額:0.9
注意:這裏在創建BigDecimal類的實例時,在構造方法中一定要使用數字字符串作爲參數。如果直接使用浮點數或改類型的變量作爲參數,那麼構造方法接受的是經過二進制存儲的浮點,這樣就是不精確的浮點數。