int number = 1255; -> //It could also be 125(1€25Cent) or 10(10Cent) or 5(5Cent)
public double toMoney(int number)
{
...
}
作爲回報,我想雙號:12.55,或者輸入:10則:00.10
我知道,我可以用模是這樣做的:
1255%,100 ..獲得55 ..但是,如何做到這一點的12月末,如何 形式,它作爲一個雙?
int number = 1255; -> //It could also be 125(1€25Cent) or 10(10Cent) or 5(5Cent)
public double toMoney(int number)
{
...
}
作爲回報,我想雙號:12.55,或者輸入:10則:00.10
我知道,我可以用模是這樣做的:
1255%,100 ..獲得55 ..但是,如何做到這一點的12月末,如何 形式,它作爲一個雙?
如果我正確理解你的問題,你可能想只是這樣做:
return (double)number/100.;
雖然提醒一句:你不應該使用浮點的金錢由於四捨五入的問題。
如果你只想打印貨幣格式的數字,這裏有一個100%安全的方法:
System.out.print((number/100) + ".");
int cents = number % 100;
if (cents < 10)
System.out.print("0");
System.out.println(cents);
這或許可以被簡化更好......當然,你可以去的BigDecimal了很多,但海事組織用大錘砸死了一隻螞蟻。
public double toMoney(int number)
{
return number/100.0;
}
如果你處理的貨幣金額,千萬記住,當你轉換的數量爲double
,可能會發生的一些精度損失。
public double toMoney(int number)
{
return number/100.0
}
的技巧是使用100.0
而非100
迫使Java來使用雙師。
public double toMoney(int number)
{
return number/100.0;
}
P.S.你不應該使用雙倍的金錢價值,壞主意。
該方法不應該存在,因爲它不能給出正確的結果。
因爲內部,double
是一種格式(二進制浮點),其不能準確地表示相同的0.1,在所有 0.2或0.3 一個數字。閱讀Floating-Point Guide瞭解更多信息。
如果你需要小數點,你的輸出格式應該是BigDecimal
或String
。
打印金額的方式應該是通過使用NumberFormat類!
看看這個例子:
NumberFormat format = NumberFormat.getCurrencyInstance(Locale.FRANCE);
format.setCurrency(Currency.getInstance("EUR"));
System.out.println(format.format(13234.34));
哪個打印輸出:
13 234,34 €
你可以嘗試不同的地區和貨幣代碼。請參閱文檔:http://download.oracle.com/javase/1.4.2/docs/api/java/text/NumberFormat.html。
你不應該使用雙值錢的價值觀,壞主意。 –
我正在學習(學校)及其練習的一部分 – eMi
@PetrAbdulin出於好奇,應該用什麼呢? –