java - 在 Java 中舍入 .5

标签 java rounding

如何实现一个舍入函数,将除 0.5 或其任何奇数倍以外的所有数字都像往常一样舍入到最接近的整数?

例如:

  • 2.899 将四舍五入为 3.0
  • 2.332 将向下舍入为 2.0
  • 2.5 也将向下舍入为 2.0(而不是 3.0)

最佳答案

您可以按如下方式使用 BigDecimal:

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

示例:

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

输出:

2.89  ->  3.00
2.33  ->  2.00
2.50  ->  2.00

关于java - 在 Java 中舍入 .5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27450766/

相关文章:

java - 对数字(float)进行舍入以将其存储为 int,而不使用像 math.round() 这样的 math.packe

java - Google App Engine 查询过滤器按日期

java - 使用 Saxon-HE 检索 XSLT 2.0 中的 HashMap 值

java - 为什么使用 double 而不是整数?

rounding - 如何对总和为 100% 的一组数字进行四舍五入

java - 使用 BigDecimal 舍入?

java - Spring,抽象类和注解

java - 渲染器和编辑器的 JTable 相同组件

java - 使用 maven JDBC mysql 找不到类

jquery - 在小数末尾添加 0 以确保它始终是小数点后 2 位?