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
。
我想在 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
。