金额计算不能用doube!!!!必须用BigDecimal

金额计算不能用doube!!!!

金额计算不能用doube!!!!

金额计算不能用doube!!!!

重要的事情讲三遍。哈,金额计算必须用BigDecimal,下面对比一下用double 跟BigDecimal的区别,这里为了方便我直接调用工具类MoneyUtil,最后再来看工具类怎么实现

1.出现科学计数法:

 double d1 = 0.00000000000000001;
 Log.v("zyl", "d1:"+d1);
 Log.v("zyl", "d1:"+MoneyUtil.formatMoney(d1+""));

控制台输出结果:d1:1.0E-17

                           d1:0.00000000000000001000

2.计算金额不准确,丢失精度:

 double d1 = 11540;
 double d2 = 0.35;
 Log.v("zyl", "result:"+(d1*d2));
 Log.v("zyl", "result2:"+MoneyUtil.moneyMul(d1+"", d2+""));
控制台输出结果:

result:4038.9999999999995
result2:4039.00000000000000000000 (正确答案)

3.避免发生强转错误

这个虽然跟自己粗心有关,但实际在项目应用的时候,往往数据既需要计算,又需要展示,比如你在计算单价跟数量相乘的是,一般我们会用int 跟 double ,然后展示的时候又需要字符串。好了,此时你把它转为字符串了,但又需要你拿着刚

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值