黑马程序员技术交流社区

标题: Math.round(11.5)等於多少? Math.round(-11.5)等於多少? [打印本页]

作者: wsc1988126    时间: 2012-10-22 22:06
标题: Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
为什么一个是12,一个是-11

作者: 于连林    时间: 2012-10-22 22:07
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;因为返回最接近参数的long.通过加上1/2 将该结果舍入为整数,取结果的基数并将其强制转换为long 类型。换句话说,结果等于以下表达式的值:(long)Math.floor(a + 0.5d)

作者: 鲁中需    时间: 2012-10-22 22:49
Math.round(x)的实质是 对 x 先加上0.5,然后对其进行向下取值。即 Math.round(x)= Math.floor( x + 0.5  )

所以 Math.round(11.5)=12 ; Math.round(-11.5)= -11
作者: 赵红萍    时间: 2012-10-22 22:49
round方法返回的是最接近你传递的参数的整数,正数的11.5,最接近它的整数是12,-11.5最接近它的整数-11,也就是四舍五入的意思
作者: 李铁    时间: 2012-10-22 22:59
首先:
Math类round的内部实现
public static void round(float a){
   return (int)floor(a+0.5f);
}

public static void round(double a){
   return (double)floor(a+0.5d);
}
都是将参数值+0.5后与floor()进行运算,floor():它是取一个小于或等于参数值的最大整数。
用一句话概括round()方法的运算效果了:Mah类的round()方法的运算结果是一个<=(参数值+0.5)的最大整数。
所以Math.round(11.5)=12    Math.round(-11.5)=-11
作者: firstdreamer    时间: 2012-10-22 23:15
{:soso_e103:}
作者: 黑马杨锦喜    时间: 2012-10-23 01:06
楼主,这其实是一些定义来的,就像我们说四舍五入,或进一法,其都是一种约定俗成的东西,
作者: 黑马杨锦喜    时间: 2012-10-23 01:07
楼主,这其实是一些定义来的,就像我们说四舍五入,或进一法,其都是一种约定俗成的东西,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2