Double型的精确四则运算

本文探讨了Java中使用double类型进行四则运算时遇到的精度问题,并提供了使用BigDecimal类解决该问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在JAVA中进行double的四则运算时,结果不一定正确
doublea=0.05;
doubleb=0.01;
System.out.println(a
+b);//输出0.060000000000000005
doublea=1.0;
doubleb=0.42;
System.out.println(a
-b);//0.5800000000000001
doublea=100;
doubleb=4.015;
System.out.println(a
*b);//401.49999999999994
doublea=123.3;
doubleb=100;
System.out.println(a
/b);//输出1.2329999999999999
doublea=123.4;
doubleb=100;System.out.println(a/b);//输出1.234

对于需要精确结果的java程序,可以采用java.math.BigDecimal来实现
例如加法运算:
publicstaticdoubleadd(doublev1,doublev2)...{
BigDecimalb1
=newBigDecimal(Double.toString(v1));
BigDecimalb2
=newBigDecimal(Double.toString(v2));
returnb1.add(b2).doubleValue();
}
注意:此处构造BigDecimal时必须用字符串形式,否则同样达不到精确效果
publicstaticdoubleminus(doublev1,doublev2)...{
BigDecimalb1
=newBigDecimal(v1);
BigDecimalb2
=newBigDecimal(v2);
returnb1.subtract(b2).doubleValue();
}
doublea=1;
doubleb=0.42;
System.out.println(minus(a,b));
//0.5800000000000001
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值