floor 返回不大于的最大整数
round 则是4舍5入的计算,入的时候是到大于它的整数(当-1.5时可见,四舍五入后得到的结果不是我们期待的,解决办法是先对他取绝对值,然后在用round方法)
round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。
ceil 则是不小于他的最小整数
ceil函数只要小数点非0,正数将返回整数部分+1,负数返回整数部分(带符号)
Math.ceil(3.0)返回3
看例子
Math.floor | Math.round | Math.ceil | |
1.4 | 1 | 1 | 2 |
1.5 | 1 | 2 | 2 |
1.6 | 1 | 2 | 2 |
-1.4 | -2 | -1 | -1 |
-1.5 | -2 | -1 | -1 |
-1.6 | -2 | -2 | -1 |
测试程序如下:
public class MyTest {
public static void main(String[] args) {
double[] nums = { 1.4, 1.5, 1.6, -1.4, -1.5, -1.6 };
for (double num : nums) {
test(num);
}
}
private static void test(double num) {
System.out.println("Math.floor(" + num + ")=" + Math.floor(num));
System.out.println("Math.round(" + num + ")=" + Math.round(num));
System.out.println("Math.ceil(" + num + ")=" + Math.ceil(num));
}
}
运行结果
Math.floor(1.4)=1.0
Math.round(1.4)=1
Math.ceil(1.4)=2.0
Math.floor(1.5)=1.0
Math.round(1.5)=2
Math.ceil(1.5)=2.0
Math.floor(1.6)=1.0
Math.round(1.6)=2
Math.ceil(1.6)=2.0
Math.floor(-1.4)=-2.0
Math.round(-1.4)=-1
Math.ceil(-1.4)=-1.0
Math.floor(-1.5)=-2.0
Math.round(-1.5)=-1
Math.ceil(-1.5)=-1.0
Math.floor(-1.6)=-2.0
Math.round(-1.6)=-2
Math.ceil(-1.6)=-1.0========================
ceil
public static double ceil(double a)
返回最小的(最接近负无穷大)double
值,该值大于等于参数,并等于某个整数。特殊情况如下:
- 如果参数值已经等于某个整数,那么结果与该参数相同。
- 如果参数为 NaN、无穷大、正 0 或负 0,那么结果与参数相同。
- 如果参数值小于 0,但是大于 -1.0,那么结果为负 0。
注意,Math.ceil(x)
的值与 -Math.floor(-x)
的值完全相同。
参数:
a
- 一个值。
返回:
最小(最接近负无穷大)浮点值,该值大于等于该参数,并等于某个整数。
floor
public static double floor(double a)
返回最大的(最接近正无穷大)double
值,该值小于等于参数,并等于某个整数。特殊情况如下:
- 如果参数值已经等于某个整数,那么结果与该参数相同。
- 如果参数为 NaN、无穷大、正 0 或负 0,那么结果与参数相同。
参数:
a
- 一个值。
返回:
最大(最接近正无穷大)浮点值,该值小于等于该参数,并等于某个整数。
round
public static int round(float a)
返回最接近参数的 int
。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 int
类型。换句话说,结果等于以下表达式的值:
(int)Math.floor(a + 0.5f)
特殊情况如下:
- 如果参数为 NaN,那么结果为 0。
- 如果结果为负无穷大或任何小于等于
Integer.MIN_VALUE
的值,那么结果等于Integer.MIN_VALUE
的值。 - 如果参数为正无穷大或任何大于等于
Integer.MAX_VALUE
的值,那么结果等于Integer.MAX_VALUE
的值。
参数:
a
- 要舍入为整数的浮点值。
返回:
舍入为最接近的 int
值的参数值。
round
public static long round(double a)
返回最接近参数的 long
。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 long
类型。换句话说,结果等于以下表达式的值:
(long)Math.floor(a + 0.5d)
特殊情况如下:
- 如果参数为 NaN,那么结果为 0。
- 如果结果为负无穷大或任何小于等于
Long.MIN_VALUE
的值,那么结果等于Long.MIN_VALUE
的值。 - 如果参数为正无穷大或任何大于等于
Long.MAX_VALUE
的值,那么结果等于Long.MAX_VALUE
的值。
参数:
a
- 舍入为 long
的浮点值。
返回:
舍入为最接近的 long
值的参数值。