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