在java中四舍五入双值

jul*_*ura 1 java format double

我想在 java 中舍入一个双精度值。总是将值四舍五入,但有时会以正确的方式将值四舍五入。例如:

值 = 6.5817

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

值 = 6.59

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

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

And*_*eas 9

由于double值是不精确的,例如它不能完全存储一个数字0.07,您需要使用BigDecimal来帮助对一个double值进行四舍五入,获得错误值的可能性最小。

要四舍五入到 2 位小数,请使用:

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

请注意,此代码打印0.07value = 0.07,不像例如Math.ceil(value * 100.0) / 100.0,其中不正确的打印0.08