3 回答

TA贡献1848条经验 获得超6个赞
您使用不正确。尝试这个。
import java.text.*;
public class Currency {
private double TotalPrice;
// only one instance required
NumberFormat nformat = NumberFormat.getCurrencyInstance();
public static void main(String[] args) {
new Currency().start();
}
public void start() {
final double nightlyRate = 100.00;
int elapse = 1020202220; // random value
double elapsedDays = elapse / (24 * 60 * 60 * 1000.);
TotalPrice = elapsedDays * nightlyRate;
String formattedCurrency = formatCurrency(TotalPrice);
System.out.println(formattedCurrency);
}
public String formatCurrency(double amount) {
String fmtedCurrency = nformat.format(amount);
return fmtedCurrency;
}
}
根据您所在的位置,您可能需要也可能不需要设置语言环境。你应该使用美分来处理你的货币单位。稍后兑换成美元。这可能对你有用。为什么不使用 Double 或 Float 来表示货币?

TA贡献1817条经验 获得超14个赞
-format()
方法返回 a String
,所以你的第一种方法已经很好了:
String currency = NumberFormat.getCurrencyInstance().format(TotalPrice);
但是,现在您的方法calculateTotalPrice()
想要返回 a double
,因此您需要将方法的返回类型也更改为String
,或者将您的字符串转换回 a double
(我怀疑您是否真的想要)。请注意,double
用于金钱问题是不好的。你应该BigDecimal
改用。

TA贡献1780条经验 获得超5个赞
首先,在处理财务时,您应该谨慎选择要使用的类型。浮点数会有舍入误差。这就是您应该使用BigDecimal的原因。
然后,要将 String 解析为 BigDecimal,如此处所建议的,您应该在 DecimalFormat 类中使用setParseBigDecimal ,然后parse将为您返回一个 BigDecimal。
添加回答
举报