如何对方法的结果强加十进制格式?

时间:2013-04-17 19:46:43

标签: java decimalformat

我有这段代码:

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

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

由于该方法返回一个double,因此您的问题是已发布的nonanswerable,而DecimalFormat只能返回一个String。尝试返回格式化的 double 是没有意义的。我不建议您更改方法,但考虑创建一个单独的方法,比如getInterestString(),它取theInterest()的结果,并用DecimalFormatter格式化它,然后返回这个格式化的字符串。

即,

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 well状态,您应该努力避免使用浮点数进行货币计算,因为不准确性很重要。最好使用BigDecimal。

答案 1 :(得分:2)

您根本不应该使用double进行财务工作。通常情况下,您使用BigDecimal,其中您的号码按您所在国家/地区的最低货币单位进行评估:

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

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