您的位置:

Java取整数全解析

一、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。