1. 程式人生 > >C++中floor,ceil , round , rint用法

C++中floor,ceil , round , rint用法

1.Math.floor

floor,英文原意:地板。 
Math.floor 函式是求一個浮點數的地板,就是 向下 求一個最接近它的整數,它的 
值肯定會小於或等於這個浮點數。

再看下面的例子的時候,腦中想象一個豎著的數軸,負數在下,正數在上。這樣對於向上取整和向下取整的說法,可能會更容易理解。

例子:

        System.out.println("Math.floor(-1.1): " + Math.floor(-1.1));
        System.out.println("Math.floor(-1.5): " + Math.floor(-1.5));
        System.out.println("Math.floor(-1.6): "
+ Math.floor(-1.6)); System.out.println("Math.floor(0.1): " + Math.floor(0.1)); System.out.println("Math.floor(0.5): " + Math.floor(0.5)); System.out.println("Math.floor(0.6): " + Math.floor(0.6)); System.out.println("Math.floor(1.1): " + Math.floor(1.1)); System.out.println("Math.floor(11.5): "
+ Math.floor(11.5)); System.out.println("Math.floor(15.7): " + Math.floor(15.7));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

結果為: 
Math.floor(-1.1): -2.0 
Math.floor(-1.5): -2.0 
Math.floor(-1.6): -2.0 
Math.floor(0.1): 0.0 
Math.floor(0.5): 0.0 
Math.floor(0.6): 0.0 
Math.floor(1.1): 1.0 
Math.floor(11.5): 11.0 
Math.floor(15.7): 15.0

2.Math.ceil

ceil,英文原意:天花板。 
Math.ceil 函式執行的是 向上 取接近的整數,它返回的肯定會大於或等於函式引數。 
例子:

        System.out.println("Math.ceil(-1.1): " + Math.ceil(-1.1));
        System.out.println("Math.ceil(-1.5): " + Math.ceil(-1.5));
        System.out.println("Math.ceil(-1.6): " + Math.ceil(-1.6));
        System.out.println("Math.ceil(0.1): " + Math.ceil(0.1));
        System.out.println("Math.ceil(0.5): " + Math.ceil(0.5));
        System.out.println("Math.ceil(0.6): " + Math.ceil(0.6));
        System.out.println("Math.ceil(1.1): " + Math.ceil(1.1));
        System.out.println("Math.ceil(1.5): " + Math.ceil(1.5));
        System.out.println("Math.ceil(1.6): " + Math.ceil(1.6));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

結果為: 
Math.ceil(-1.1): -1.0 
Math.ceil(-1.5): -1.0 
Math.ceil(-1.6): -1.0 
Math.ceil(0.1): 1.0 
Math.ceil(0.5): 1.0 
Math.ceil(0.6): 1.0 
Math.ceil(1.1): 2.0 
Math.ceil(1.5): 2.0 
Math.ceil(1.6): 2.0

3.Math.rint

Math.rint 函式返回最接近引數的整數,如果有2個數同樣接近,則會返回偶數的那個。

        System.out.println("Math.rint(-1.1): " + Math.rint(-1.1));
        System.out.println("Math.rint(-1.5): " + Math.rint(-1.5));
        System.out.println("Math.rint(-1.6): " + Math.rint(-1.6));
        System.out.println("Math.rint(0.1): " + Math.rint(0.1));
        System.out.println("Math.rint(0.5): " + Math.rint(0.5));
        System.out.println("Math.rint(0.6): " + Math.rint(0.6));
        System.out.println("Math.rint(1.1): " + Math.rint(1.1));
        System.out.println("Math.rint(1.5): " + Math.rint(1.5));
        System.out.println("Math.rint(1.6): " + Math.rint(1.6));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

結果為: 
Math.rint(-1.1): -1.0 
Math.rint(-1.5): -2.0 
Math.rint(-1.6): -2.0 
Math.rint(0.1): 0.0 
Math.rint(0.5): 0.0 
Math.rint(0.6): 1.0 
Math.rint(1.1): 1.0 
Math.rint(1.5): 2.0 
Math.rint(1.6): 2.0

4.Math.round

round 方法,我們通常會說這個方法表示”四捨五入”,但是當引數為負數時,就不太好理解。 
所以,以原始碼的計算方式來理解會比較準確。

原始碼大意:

 Math.round(x) = Math.floor(x + 0.5)
  • 1

即將原來的數字加上0.5後再向下取整。 
例子:

        System.out.println("Math.round(-1.1): " + Math.round(-1.1));
        System.out.println("Math.round(-1.5): " + Math.round(-1.5));
        System.out.println("Math.round(-1.6): " + Math.round(-1.6));
        System.out.println("Math.round(0.1): " + Math.round(0.1));
        System.out.println("Math.round(0.5): " + Math.round(0.5));
        System.out.println("Math.round(0.6): " + Math.round(0.6));
        System.out.println("Math.round(1.1): " + Math.round(1.1));
        System.out.println("Math.round(1.5): " + Math.round(1.5));
        System.out.println("Math.round(1.6): " + Math.round(1.6));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

結果為: 
Math.round(-1.1): -1 
Math.round(-1.5): -1 
Math.round(-1.6): -2 
Math.round(0.1): 0 
Math.round(0.5): 1 
Math.round(0.6): 1 
Math.round(1.1): 1 
Math.round(1.5): 2 
Math.round(1.6): 2