hppryz 2015-07-29 22:51 采纳率: 100%
浏览 2368
已采纳

java BigDecimal四舍五入结果错误的bug

for (double i = 511.55; i < 2050.55; i++) {
BigDecimal bd = new BigDecimal(i);
bd =bd.setScale(1, BigDecimal.ROUND_HALF_UP);
System.out.println(bd.doubleValue());
}

    512-2048 之内的值 四舍五入不对 全部舍位了.没有进位 
    是不是电脑的问题?

ROUND_HALF_UP: 遇到.5的情况时往上近似,例: 1.5 ->;2
ROUND_HALF_DOWN : 遇到.5的情况时往下近似,例: 1.5 ->;1

  • 写回答

4条回答 默认 最新

  • danielinbiti 2015-07-29 23:11
    关注
     for (double i = 511.55; i < 2050.55; i++) {
     是你这i定义的问题,i是double,本身就不精确,你认为的0.55可能是0.549999999
     所以变成4舍了。你可以打印i出来看看
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部