一、Java中的取整函数
Java中,取整函数包括Math.floor(), Math.ceil(), Math.round(), 和一些强制类型转换方法,如(int), (long)等。
二、Math.floor()和Math.ceil()
Math.floor() 和 Math.ceil() 均是向下取整和向上取整的方法。
double num1 = 3.7; double num2 = 3.2; System.out.println(Math.floor(num1)); // 输出3.0 System.out.println(Math.ceil(num2)); // 输出4.0
上面的代码中,Math.floor() 将3.7向下取整为3,Math.ceil() 将3.2向上取整为4。
三、Math.round()
Math.round() 函数介于向上取整和向下取整之间,这个函数返回一个数最接近的整数。
double num1 = 3.4; double num2 = 3.5; System.out.println(Math.round(num1)); // 输出3 System.out.println(Math.round(num2)); // 输出4
上述代码中,Math.round() 将 3.4 取整为 3,将 3.5 取整为 4。
四、强制类型转换
Java中的基本数据类型可以进行强制类型转换,将一个数据类型转换为另一个数据类型。比如将 double 转换成 int。
double num1 = 3.7; System.out.println((int)num1); // 输出3
上述代码将 3.7 强制转换为 int 类型,结果为 3。
五、舍入模式
Java中提供了一系列的舍入模式。
- BigDecimal.ROUND_UP:向远离零的方向舍入。
- BigDecimal.ROUND_DOWN:向接近零的方向舍入。
- BigDecimal.ROUND_CEILING:向正无穷方向舍入。
- BigDecimal.ROUND_FLOOR:向负无穷方向舍入。
- BigDecimal.ROUND_HALF_UP:四舍五入,五舍六入。
- BigDecimal.ROUND_HALF_DOWN:四舍五入,五不舍六入。
- BigDecimal.ROUND_HALF_EVEN:银行家算法,类似于 ROUND_HALF_UP,但是当末尾数字为5时,采用“偶数舍”的方法。
以ROUND_HALF_UP为例:
BigDecimal num1 = new BigDecimal("3.45"); BigDecimal num2 = new BigDecimal("3.55"); System.out.println(num1.setScale(1, BigDecimal.ROUND_HALF_UP)); // 输出3.4 System.out.println(num2.setScale(1, BigDecimal.ROUND_HALF_UP)); // 输出3.6
上述代码中,setScale() 方法使用 ROUND_HALF_UP 舍入模式将 3.45 设置为保留1位小数,结果为 3.4,将 3.55 设置为保留1位小数,结果为 3.6。
六、四舍五入到指定小数位数
可以使用 DecimalFormat 类结合 Math.round() 方法来实现四舍五入到指定小数位数。
double num = 3.1415926; DecimalFormat df = new DecimalFormat("#.00"); String result = df.format(Math.round(num*100)/100.0); System.out.println(result); // 输出3.14
上述代码中,将 double 类型的 num 数值四舍五入保留两位小数,结果为 3.14。