更精确的使用浮点型

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值