Java 如何对方法的结果强制使用decimalFormat?
我有以下代码:Java 如何对方法的结果强制使用decimalFormat?,java,decimalformat,Java,Decimalformat,我有以下代码: public double theInterest(){ return (accountBalance*i) +accountBalance; 我的问题是,有没有一种方法可以将DecimalFormat应用于等式的结果,以便它最多显示2位小数 非常感谢您的帮助。您的问题不可回答,因为该方法返回double,而DecimalFormat只能返回字符串。尝试返回一个格式化的double是没有意义的。我不建议你改变这个方法,但是考虑创建一个单独的方法,比如
public double theInterest(){
return (accountBalance*i) +accountBalance;
我的问题是,有没有一种方法可以将DecimalFormat应用于等式的结果,以便它最多显示2位小数
非常感谢您的帮助。您的问题不可回答,因为该方法返回double,而DecimalFormat只能返回字符串。尝试返回一个格式化的double是没有意义的。我不建议你改变这个方法,但是考虑创建一个单独的方法,比如说“代码> GoEntryString())/<代码>,它使用
private NumberFormat moneyFormat = NumberFormat.getCurrencyInstance();
public String currencyFormat(double numberValue) {
moneyFormat.format(numberValue);
}
编辑:正如svc所说,您应该努力避免在货币计算中使用浮点数,因为这是不准确的问题。最好使用BigDecimal。在财务工作中根本不应该使用
double
。通常,您使用的是BigDecimal
,其中您的数字以您所在国家的最低货币单位计价:
BigDecimal tenDollars = new BigDecimal(1000L, 2);
// Alternatively, use the BigDecimal(BigInteger, int) constructor.
您可以使用
MathContext
s设置舍入模式。在内部,存储货币值的BigDecimal;只有当您向用户显示时,您才能使用格式将其转换为字符串。还要添加的一点是,不鼓励使用double
来处理金钱。@svz:amen!double太不准确,无法用于实际货币计算。答案经过编辑以反映这一点。正如HFOE所提示的,您需要理解数值和该数值表示形式之间的差异double
是一种表示值的方法,它不附带任何固有的视觉格式。如果执行System.out.println(someDouble)
您将获得println
为someDouble
选择的“默认”格式,而不是名为someDouble
的值中包含的任何格式。要获得不同的格式,您需要使用多种格式技术之一明确指定所需的格式。(并且“单独格式技术”的输出(即值)将是字符串,而不是双精度)
BigDecimal tenDollars = new BigDecimal(1000L, 2);
// Alternatively, use the BigDecimal(BigInteger, int) constructor.