黑马程序员技术交流社区
标题:
Math.round(11.5)=?
[打印本页]
作者:
刘文超
时间:
2013-1-4 12:00
标题:
Math.round(11.5)=?
本帖最后由 刘文超 于 2013-1-5 22:52 编辑
package org.qyx.online;
public class TestMathRound {
public static void main(String[] args) {
System.out.println(Math.round(11.5));
System.out.println(Math.round(-11.5));
//打印 12、-11
}
}
复制代码
//求解释??
作者:
田磊阳
时间:
2013-1-4 12:15
2、小数点后第一位=5
3、正数:Math.round(11.5)=12
4、负数:Math.round(-11.5)=-11
5、小数点后第一位<5
6、正数:Math.round(11.46)=11
7、负数:Math.round(-11.46)=-11
8、小数点后第一位>5
9、正数:Math.round(11.68)=12
10、负数:Math.round(-11.68)=-12
根据上面例子的运行结果,我们还可以按照如下方式总结,或许更加容易记忆:
1、参数的小数点后第一位<5,运算结果为参数整数部分。 2、参数的小数点后第一位>5,运算结果为参数整数部分绝对值+1,符号(即正负)不变。 3、参数的小数点后第一位=5,正数运算结果为整数部分+1,负数运算结果为整数部分。
终结:大于五全部加,等于五正数加,小于五全不加
作者:
而今从头越2012
时间:
2013-1-4 13:58
在网上看了一堆的解释,觉得不能一下子就能接受,下面是我个人的理解:
Math.round(x),其实说白了,可以按照0.5为分界线;
我们在初中时都学习过,数字大小的表示,可以在数轴上显示出来,在右边的数总是大于左边;
(1)当x的小数部分>0.5时,x为负数时,Math.round(x)结果就是在x的数轴左边的最大整数;x为正数时,Math.round(x)结果就是在x的数轴右边的最小整数;
(2)当x的小数部分<=0.5时,x为负数时,Math.round(x)结果就是在x的数轴右边的最小整数;x为正数时,Math.round(x)结果就是在x的数轴左边的最大整数;
下面看一段代码:
package com.itheima;
public class Test{
public static void main(String[] agrs){
//负数
System.out.println(Math.round(-11.25)); //-11
System.out.println(Math.round(-11.5)); //-11
System.out.println(Math.round(-11.78)); //-12
//正数
System.out.println(Math.round(11.26)); //11
System.out.println(Math.round(11.5)); //11
System.out.println(Math.round(11.67)); //12
}
}
作者:
何竹冬
时间:
2013-1-4 14:37
本帖最后由 何竹冬 于 2013-1-4 15:59 编辑
你好
通过查阅API发现,先加上 1/2,对结果调用 floor 并将所得结果强制转换为 double类型。换句话说,结果等于以下表达式的值:
(double)Math.floor(a + 0.5f)
也就是说先加上0.5在调用floor取其值。floor方法是返回小于等于参数的最大double值。
也就是说传入11.5的时候运算过程是(double)Math.floor(11.5 + 0.5f)=12.0
传入-11.5的时候运算过程是(double)Math.floor(-11.5 + 0.5f)=-11.0
作者:
冉世友
时间:
2013-1-4 23:13
按照四舍五入来理解的话,五入就是变大后的最小整数,四舍就是变小后的最大整数。
作者:
刘文超
时间:
2013-1-5 22:52
谢谢楼上几位、、
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2