取整方法
Math.floor(double a) 向下取整
Math.ceil(double a) 向上取整
Math.round(double a) 四舍五入
+0.5向下取整
Math.rint(double a) 就近取整
1.6接近2,所以就取2
1.4接近1,所以就取1
1.5跟1和2都很接近,這時候就取偶數
(int) 類型強轉
直接截取小數
測試示例
測試示例代碼?
public static void main(String[] args) {double[] teArr = new double[]{1.4, 1.5, 1.6};for (double t1 : teArr) {System.out.println("==========================================================");System.out.println("測試數據:" + t1);// 向下取整System.out.println("向下取整 " + Math.floor(t1));// 向上取整System.out.println("向上取整 " + Math.ceil(t1));// 四舍五入或(+0.5向下取整)System.out.println("四舍五入 " + Math.round(t1));// 就近取整 如1.6接近2,所以就取2;1.4接近1,所以就取1;那么1.5呢,1.5跟1和2都很接近,這時候就取偶數System.out.println("就近取整 " + Math.rint(t1));// 類型強轉 直接截取小數System.out.println("類型強轉 " + (int) t1);}
}
-----------------------------------
java 小數取整 java對小數取整
https://blog.51cto.com/u_14112/6338010
?示例返回結果
==========================================================
測試數據:1.4
向下取整 1.0
向上取整 2.0
四舍五入 1
就近取整 1.0
類型強轉 1
==========================================================
測試數據:1.5
向下取整 1.0
向上取整 2.0
四舍五入 2
就近取整 2.0
類型強轉 1
==========================================================
測試數據:1.6
向下取整 1.0
向上取整 2.0
四舍五入 2
就近取整 2.0
類型強轉 1
-----------------------------------
java 小數取整 java對小數取整
https://blog.51cto.com/u_14112/6338010
?Java兩整數相除向上取整的方式詳解(Math.ceil())
在調外部接口獲取列表數據時,需要判斷是否已經取完了所有的值,因此需要用到向上取整
Java中兩個整數相除,如果不能整除,默認是向下取整的。例如:11 除以 3 的結果是 3。然而,某些情況下(eg. 把11個糖果,每3個分一堆,不足三個也分成一堆,可以分幾堆?),我們需要向上取整,這樣的情況該如果處理呢??
方式一: 添加三目運算符邏輯代碼?
x / y + (x % y != 0 ? 1 : 0);
?這種方法邏輯上很簡單,如果x可以整除y,就將x / y 的結果加0,不能整除y就將x / y 的結果加1。
方式二:使用ceil函數?
(int)Math.ceil((double)x/y);
// 或者
(int)Math.ceil(x * 1.0 /y);
?首先,將被除數轉換成double類型,再將計算的結果通過Math.ceil()函數向上取整,這種方式是網上經常可以看到的方式。
方式三:其他邏輯?
(x + y - 1) / y
?
這種方式為什么可以達到向上取整的效果呢,為什么x要加y - 1?
為了方便理解,我們通過具體的計算來說明。
1.對于可以整除的情況
x = 9,y = 3
(x + (y - 1)) / y,x加上了一個比y小的數,最終(x + (y - 1)) / y = (x / y) ...y - 1
商為(x / y), 余數為(y - 1),余數相當于兩數相除結果都小數部分,會被舍去,最終(x + (y - 1)) / y` = (x / y)
2.對于不可以整除的情況
x = 11, y = 3
11 / 3 = 3 ... 2
x + (y - 1) = (3 * 3 + 2) + (3 - 1) = (3 * 3 + 2 - 1)+ 3= (3 * 3 + 3) + 2 - 1
x + (y - 1) / y = ((3 * 3 + 3) + 2 - 1 )/ 3 = 4
就是x不能整除y余數肯定在1到y - 1之間,從中取出1給y - 1,使得被除數增加了一個y,進而商會增加1,余數部分為0到y - 2是會被舍去的。
java向上取整函數Math.ceil()?
java向上取整函數Math.ceil()
百度Math.ceil()函數:“Math.ceil()是常見編程語言中的常用代碼,ceil() 方法執行的是向上取整計算,它返回的是大于或等于函數參數,并且與之最接近的整數。“
Math.ceil(param)使用實例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
結果為所要的:(函數式與整除判斷式等效)
注意:
兩個限制:判斷式,適用于整除;其操作數為int(Integer)數據類型,否則,得不到想要的效果。函數式,若使用int(Integer)作為操作數(參數),需要特別注意:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
測試結果:
總結:函數(接口),都具有它的適應范圍和限制條件,正是這些條件,標定了基本功能,有準確的指向,得出特定效果。這也是智能。
?