为了账号安全,请及时绑定邮箱和手机立即绑定

double四舍五入问题 求解

double四舍五入问题 求解

MMMHUHU 2018-07-11 19:18:39
BigDecimal decimal = new BigDecimal(0.005);         BigDecimal decimal2 = new BigDecimal(0.015);         DecimalFormat   df   =new   DecimalFormat("0.##");         df.setRoundingMode(RoundingMode.HALF_UP);         System.out.println(df.format(decimal.doubleValue()));         System.out.println(df.format(decimal2.doubleValue()));输出的答案都是0.01 为什么,我希望第二个输入的是0.02
查看完整描述

4 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

没问题啊,代码测试结果就是0.02啊

https://img1.sycdn.imooc.com//5b5584e90001a76e08370651.jpg

查看完整回答
反对 回复 2018-07-23
?
HUX布斯

TA贡献1876条经验 获得超6个赞

decimal Round(decimal d, int decimals, MidpointRounding mode)
可以试试这个能不能用

查看完整回答
反对 回复 2018-07-23
?
哔哔one

TA贡献1854条经验 获得超8个赞

如果需要保证精度,最好是不要使用BigDecimal的double参数的构造函数,因为存在损失double参数精度的可能,最好是使用BigDecimal的String参数的构造函数。最好是杜绝使用BigDecimal的double参数的构造函数。

查看完整回答
反对 回复 2018-07-23
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

new BigDecimal最好用string,你直接写数字的话,结果不是你想要的,
这样:BigDecimal decimal2 = new BigDecimal("0.015");
如果需要保证精度,最好是不要使用BigDecimal的double参数的构造函数,因为存在损失double参数精度的可能,最好是使用BigDecimal的String参数的构造函数。最好是杜绝使用BigDecimal的double参数的构造函数

查看完整回答
反对 回复 2018-07-23
  • 4 回答
  • 0 关注
  • 1121 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号