我有这段代码:
public double theInterest(){
return (accountBalance*i) +accountBalance;
我的问题是,有没有办法可以将DecimalFormat强加到等式的结果中,这样它最多可以显示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作为货币值;只有当您向用户显示时,才会使用格式转换为字符串。