在java中舍入.5

Piy*_*rma 3 java rounding

你怎么能实现一个舍入函数,它会像往常一样舍入所有数字,除了0.5或它的任何奇数倍到最接近的整数?

例如:

  • 2.899 将被四舍五入 3.0
  • 2.332 将被四舍五入到 2.0
  • 2.5也可以向下舍入到2.0(和不3.0)

aio*_*obe 8

您可以使用BigDecimal如下:

public static double roundHalfDown(double d) {
    return new BigDecimal(d).setScale(0, RoundingMode.HALF_DOWN)
                            .doubleValue();
}
Run Code Online (Sandbox Code Playgroud)

例:

for (double d : new double[] { 2.889, 2.332, 2.5 })
    System.out.printf("%.2f  ->  %.2f%n", d, roundHalfDown(d));
Run Code Online (Sandbox Code Playgroud)

输出:

2.89  ->  3.00
2.33  ->  2.00
2.50  ->  2.00
Run Code Online (Sandbox Code Playgroud)