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

JAVA BigDecimal四舍五入保留两位小数问题

JAVA BigDecimal四舍五入保留两位小数问题

12345678_0001 2019-02-22 14:41:20
double f = 1.155; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); f=0.155 打印结果等于 0.15 f=1.155 打印结果等于 1.15f=2.155 打印结果等于 2.15f=3.155 打印结果等于 3.15 f=4.155 打印结果等于 4.16 而且一会后 1.155 打印出 1.16 - -感觉就像闹着玩似的
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

你把 double f = 1.155; 改成 String f = "1.155"; 之后,就不会存在你说的问题。
你需要了解下 浮点数的精度缺失问题,然后知道为什么有些浮点数在内存中计算机无法表示 —— 一开始就是无法表示的,那么你把它作为参数传递给 BigDecimalBigDecimal 也只能按照内存中存在的东西来处理。

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 13932 浏览

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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