java 中的双精度值

Round up double value in java

我想在 java 中对双精度值进行四舍五入。始终对值进行四舍五入,尽管这种方法是正确的,但有时会向下舍入该值。例如:

值 = 6.5817

我想四舍五入,保留两位小数。所以我需要的值是这样的:

值 = 6.59

这里重要的是始终保留两位小数,如果值有更多两位小数,则始终将第二位小数四舍五入。

有人知道我如何在 java 中做到这一点吗?

尝试以下操作:

double a = 6.5817;
Math.ceil(a * 100.0) / 100.0;

因为 double 值不准确,例如它不能准确地存储像 0.07 这样的数字,您需要使用 BigDecimal 来帮助四舍五入一个 double 值,得到错误值的可能性最小。

要保留两位小数,请使用:

double value = 6.5817;
double roundedUp = BigDecimal.valueOf(value).setScale(2, RoundingMode.UP).doubleValue();
System.out.println(roundedUp); // prints 6.59

请注意,此代码在 value = 0.07 时打印 0.07,这与例如Math.ceil(value * 100.0) / 100.0 错误地打印了 0.08