0

我正在尝试将我的双精度值格式化为精确的 2 位小数,它似乎工作正常,这是我正在尝试的代码

final NumberFormat df = DecimalFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(2);
df.setRoundingMode(RoundingMode.DOWN);
df.format(value)

到现在一切正常,但我需要返回双精度值,因为它正在用于其他计算,我试过了

Double.parseDouble(df.format(value))

像大小数一样

BigDecimal price = new BigDecimal(df.format(number));

但它没有按预期工作,就像18.50被转换为18.5

虽然这不是计算问题,但我需要在 UI 上显示金额,我必须精确显示最多 2 个小数位。

有没有我可以在 java 类中处理它或者我必须在带有 JSTL 的 JSP 中处理它

4

1 回答 1

2

这就是BigDecimal为之而生的!

BigDecimal number = new BigDecimal(123.456);
// set 2 fraction digits
// Note that setScale() does not change the original, 
// but returns a new BigDecimal.
number = number.setScale(2, RoundingMode.DOWN);
// get string representation
String text = number.toPlainString();
// get double value
double dbl = number.doubleValue();

如果BigDecimal可以的话,也可以用于其他计算。

于 2013-04-10T07:35:23.883 回答