更精确的使用浮点型

浮点运算的经典案例是货币运算,涉及类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类的实例时,在构造方法中一定要使用数字字符串作为参数。如果直接使用浮点数或改类型的变量作为参数,那么构造方法接受的是经过二进制存储的浮点,这样就是不精确的浮点数。

发布了34 篇原创文章 · 获赞 9 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章