黑马程序员技术交流社区

标题: 问下为什么math.round(11.5)=12,math.round(11.5)=-11?? [打印本页]

作者: 常万    时间: 2012-3-15 18:51
标题: 问下为什么math.round(11.5)=12,math.round(11.5)=-11??
为什么math.round(11.5)等于12,math.round(-11.5)等-11???

取整的方法是怎样算的?
作者: 李爱军    时间: 2012-3-15 19:26
math.round的方法是返回最接近参数的 long。
结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 long 类型。
换句话说,结果等于以下表达式的值:

(long)Math.floor(a + 0.5d);
希望对你有帮助
作者: 乔玉吉    时间: 2012-3-15 19:57
round()  如果小数点后的数0<值<5,返回小于指定数据的最大整数
        如果小数点后的数5<=值<10,返回大于指定数据的最小整数
        其实就是---四舍五入

ceil()返回大于指定数据的最小整数. 其实就是---去小数后加1

floor()返回小于指定数据的最大整数. 其实就是---去小数

作者: 蒙武辉    时间: 2012-3-15 20:02
round(11.5)是四舍五入,所以是11.
math.round(-11.5)往上提升,不可能是-12
作者: lucky_xingxing    时间: 2012-3-15 20:52
        最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。




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