2

我有这个代码:

public double theInterest(){     
        return (accountBalance*i) +accountBalance; 

我的问题是,有没有办法可以将 DecimalFormat 强加到等式的结果,以便它显示最多 2 个小数位?

非常感谢任何帮助。

4

2 回答 2

4

您的问题已发布为无法回答,因为该方法返回一个双精度值,而 DecimalFormat 只能返回一个字符串。尝试返回格式化的double是没有意义的。我不建议您更改方法,但考虑创建一个单独的方法,例如getInterestString()获取 的结果theInterest(),并使用您的 DecimalFormatter 对其进行格式化,然后返回此格式化字符串。

IE,

public String getInterestString() {
  NumberFormat moneyFormat = NumberFormat.getCurrencyInstance();
  return moneyFormat.format(theInterest();
}

或者更一般地说,

private NumberFormat moneyFormat = NumberFormat.getCurrencyInstance();

public String currencyFormat(double numberValue) {
  moneyFormat.format(numberValue);
}

编辑:正如 svc 所说,您应该努力避免使用浮点数进行货币计算,因为不准确很重要。最好使用 BigDecimal。

于 2013-04-17T19:48:44.180 回答
2

您根本不应该将double其用于财务工作。通常,您使用 aBigDecimal您的数字按您所在国家/地区的最低货币单位计价:

BigDecimal tenDollars = new BigDecimal(1000L, 2);
// Alternatively, use the BigDecimal(BigInteger, int) constructor.

您可以使用MathContexts 设置舍入模式。在内部,您将 Bi​​gDecimal 存储为您的货币值;只有当您向用户显示时,您才会使用格式转换为字符串。

于 2013-04-17T20:03:21.970 回答