我有这个代码:
public double theInterest(){
return (accountBalance*i) +accountBalance;
我的问题是,有没有办法可以将 DecimalFormat 强加到等式的结果,以便它显示最多 2 个小数位?
非常感谢任何帮助。
我有这个代码:
public double theInterest(){
return (accountBalance*i) +accountBalance;
我的问题是,有没有办法可以将 DecimalFormat 强加到等式的结果,以便它显示最多 2 个小数位?
非常感谢任何帮助。
您的问题已发布为无法回答,因为该方法返回一个双精度值,而 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。
您根本不应该将double
其用于财务工作。通常,您使用 aBigDecimal
您的数字按您所在国家/地区的最低货币单位计价:
BigDecimal tenDollars = new BigDecimal(1000L, 2);
// Alternatively, use the BigDecimal(BigInteger, int) constructor.
您可以使用MathContext
s 设置舍入模式。在内部,您将 BigDecimal 存储为您的货币值;只有当您向用户显示时,您才会使用格式转换为字符串。