我正在尝试将我的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
答案 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
进行其他计算。