Math.round这个方法有坑


System.out.println("xcqw 5.4 *"+Math.round(5.4));
System.out.println("xcqw 5.5 *"+Math.round(5.5));
System.out.println("xcqw 5.6 *"+Math.round(5.6));
System.out.println("xcqw -5.4*"+Math.round(-5.4));
System.out.println("xcqw -5.5*"+Math.round(-5.5));
System.out.println("xcqw -5.6*"+Math.round(-5.6));


运算结果

08-11 16:42:37.682 28969-28969/com.dx.text0811 I/System.out: xcqw 5.4 *5
08-11 16:42:37.682 28969-28969/com.dx.text0811 I/System.out: xcqw 5.5 *6
08-11 16:42:37.682 28969-28969/com.dx.text0811 I/System.out: xcqw 5.6 *6
08-11 16:42:37.682 28969-28969/com.dx.text0811 I/System.out: xcqw -5.4*-5
08-11 16:42:37.682 28969-28969/com.dx.text0811 I/System.out: xcqw -5.5*-5
08-11 16:42:37.682 28969-28969/com.dx.text0811 I/System.out: xcqw -5.6*-6


问题就出在

System.out.println("xcqw -5.5*"+Math.round(-5.5));
System.out.println("xcqw -5.6*"+Math.round(-5.6));
看看函数的注释就知道为什么了 大笑

/**
 * Returns the result of rounding the argument to an integer. The result is
 * equivalent to {@code (long) Math.floor(d+0.5)}.
 * <p>
 * Special cases:
 * <ul>
 * <li>{@code round(+0.0) = +0.0}</li>
 * <li>{@code round(-0.0) = +0.0}</li>
 * <li>{@code round((anything > Long.MAX_VALUE) = Long.MAX_VALUE}</li>
 * <li>{@code round((anything < Long.MIN_VALUE) = Long.MIN_VALUE}</li>
 * <li>{@code round(+infinity) = Long.MAX_VALUE}</li>
 * <li>{@code round(-infinity) = Long.MIN_VALUE}</li>
 * <li>{@code round(NaN) = +0.0}</li>
 * </ul>
 *
 * @param d
 *            the value to be rounded.
 * @return the closest integer to the argument.
 */
public static long round(double d) {
    // check for NaN
    if (d != d) {
        return 0L;
    }
    return (long) floor(d + 0.5d);
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值