取整方法
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 |
|
测试结果:
总结:函数(接口),都具有它的适应范围和限制条件,正是这些条件,标定了基本功能,有准确的指向,得出特定效果。这也是智能。