格式化为2到2位小数

时间:2013-04-10 07:26:59

标签: java

我正在尝试将我的double值格式化为精确的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类中处理它,或者我必须在JSP中使用JSTL

1 个答案:

答案 0 :(得分: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进行其他计算。