hppryz
2015-07-30 06:51
采纳率: 100%
浏览 2.4k
已采纳

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-30 07:11
    已采纳
     for (double i = 511.55; i < 2050.55; i++) {
     是你这i定义的问题,i是double,本身就不精确,你认为的0.55可能是0.549999999
     所以变成4舍了。你可以打印i出来看看
    
    评论
    解决 无用
    打赏 举报
查看更多回答(3条)

相关推荐 更多相似问题