3 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超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;
}
}
根據(jù)您所在的位置,您可能需要也可能不需要設(shè)置語言環(huán)境。你應(yīng)該使用美分來處理你的貨幣單位。稍后兌換成美元。這可能對你有用。為什么不使用 Double 或 Float 來表示貨幣?

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個贊
-format()
方法返回 a String
,所以你的第一種方法已經(jīng)很好了:
String currency = NumberFormat.getCurrencyInstance().format(TotalPrice);
但是,現(xiàn)在您的方法calculateTotalPrice()
想要返回 a double
,因此您需要將方法的返回類型也更改為String
,或者將您的字符串轉(zhuǎn)換回 a double
(我懷疑您是否真的想要)。請注意,double
用于金錢問題是不好的。你應(yīng)該BigDecimal
改用。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個贊
首先,在處理財(cái)務(wù)時(shí),您應(yīng)該謹(jǐn)慎選擇要使用的類型。浮點(diǎn)數(shù)會有舍入誤差。這就是您應(yīng)該使用BigDecimal的原因。
然后,要將 String 解析為 BigDecimal,如此處所建議的,您應(yīng)該在 DecimalFormat 類中使用setParseBigDecimal ,然后parse將為您返回一個 BigDecimal。
添加回答
舉報(bào)