Java——double类型精度运算

写在前面——接近年底,项目遇到很多报表、结算等类型的需求,自然就会遇到很多double类型的逻辑运算,正巧之前没有总结过这方面的东西,所以就有了这篇帖子。

最开始做的时候比较渣,没有注意两个double类型做逻辑运算最后得到的数字是有误差的(原谅我这个时候有些粗心了),如下所示:

public static void main(String[] args) {
	  double a=1.47;
	  double b=2.34;
    System.out.println(a+b);//结果为:3.8099999999999996
  }

因为在实际项目中还有3位小数、4位小数等,都会出现误差,所以在很多语言中double类型的数值都不能直接进行运算,会出现这种精度问题,试想一下某个客户只有3.8099999999999996元,但是系统认为他有3.81元,可以购买3.81元的商品,久而久之那商家就亏大了,细思极恐啊有木有!

所以要进行double类型的逻辑运算的时候要怎么做才能保证不会出现精度的问题呢?我突然想到在之前看的一本非常经典的书叫做《Effective Java》,Java 之父 James Gosling非常推崇的一本书。里面就提到了float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal。BigDecimal一共有4个构造方法,其中两个对我们有用的分别是:

  1、BigDecimal(double   val)     
                      Translates   a   double   into   a   BigDecimal.     
  2、BigDecimal(String   val)     
                      Translates 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值