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

1.5

1

1.6

1

-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 值的参数值。