[英]How to use DecimalFormat to format money?
輸入看起來像8.7000000
,我想格式化為8.70 EUR
。 我考慮過使用DecimalFormat
類:
Double number = Double.valueOf(text);
DecimalFormat dec = new DecimalFormat("#.## EUR");
String credits = dec.format(number);
TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);
結果是8.7 EUR
。 如何告訴格式化程序后面有兩位數.
?
還想在這里強調Jon Skeet關於使用整數來存儲所有貨幣的觀點 - 不想用錢來處理浮點舍入錯誤。
使用.00
而不是.##
- 0
表示一個數字, #
表示一個數字(但如果它等於零則隱藏它)。
Double number = Double.valueOf(text);
DecimalFormat dec = new DecimalFormat("#.00 EUR");
String credits = dec.format(number);
TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);
或者使用setMinimumFractionDigits
:
Double number = Double.valueOf(text);
DecimalFormat dec = new DecimalFormat("#.## EUR");
dec.setMinimumFractionDigits(2);
String credits = dec.format(number);
TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);
我在下面的鏈接中找到了一個很好的解決方案
http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html
簡而言之,就像92323345465.30這樣的貨幣代表92,323,345,465.30只需使用###,###,###,###。00
也就是說,每當你使用'0',那么'0'將被另一個數字替換,或者如果沒有數字來替換它,那么它將會出現! 但是你使用'#'然后如果沒有數字來替換'#',那么該空格將為空。
請記住,您甚至可以在格式化之前或甚至在格式化字符串之后添加自己的符號,如$等
我認為一個很好的選擇就是這個方法:
使用#,###.00
,值0.50的結果將顯示如下:
$ 50
但是,如果使用#,##0.00
,則相同值的結果為:
$ 0.50
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.