好日子, 在數據庫中有房子的銷售記錄表。對於每個房屋記錄,都有貨幣代碼(ISO 4217格式)字段。是否可能以某種方式從該代碼中獲取貨幣符號,以便我可以在演示文稿一側使用它?貨幣符號映射到貨幣符號
謝謝。
P.S.試圖解決設置貨幣對象(由Currency.getInstance(currencyCode)創建)到DecimalNumberFormat setCurrency方法的問題,然後格式值我需要顯示,但格式化的值仍然沒有貨幣符號。
好日子, 在數據庫中有房子的銷售記錄表。對於每個房屋記錄,都有貨幣代碼(ISO 4217格式)字段。是否可能以某種方式從該代碼中獲取貨幣符號,以便我可以在演示文稿一側使用它?貨幣符號映射到貨幣符號
謝謝。
P.S.試圖解決設置貨幣對象(由Currency.getInstance(currencyCode)創建)到DecimalNumberFormat setCurrency方法的問題,然後格式值我需要顯示,但格式化的值仍然沒有貨幣符號。
您可以使用Currency
對象的getSymbol方法。
更新,2016年1月: 的鏈接現在都死了。但是它們特定於Java 1.4/5,因此不再相關。有關貨幣格式的更多詳細信息,請參見https://docs.oracle.com/javase/tutorial/i18n/format/numberFormat.html。雖然可以在WayBackEngine上找到這些鏈接。
您可以使用Currency類和DecimalFormat類來實現您的要求。 在下面的例子中,#表示數字,¤表示貨幣符號,您可以在類似DecimalFormat的java API文檔中找到相關的格式參數。
Currency currency = Currency.getInstance("USD");
DecimalFormat decimalFormat = new DecimalFormat("#¤");
decimalFormat.setCurrency(currency);
System.out.println(decimalFormat.format(234));
正如Nivas所說,您可以使用Currency類的getSymbol()方法直接獲取相關符號,也可以將其單獨附加到數字中。 – 2010-10-08 09:20:09
@artjomka
我可以通過我的默認區域設置拉脫維亞
Locale.setDefault(new Locale("lv","LV"));
Currency c = Currency.getInstance("EUR");
System.out.println(c.getSymbol());
複製您的問題這給了我「歐元」的輸出。
但是,通過離開將我的區域設置爲英國(已經是我的默認值),我得到了歐元的sympbol。
Locale.setDefault(Locale.UK);
Currency c = Currency.getInstance("EUR");
System.out.println(c.getSymbol());
Nivas編輯他的答案,而我寫我的。他的鏈接文章應該看到你的權利。 – 2010-10-08 10:16:17
你應該叫Currency.getSymbol(Locale)
而非Currency.getSymbol()
(沒有Locale對象)。設置默認語言環境會爲您提供所需的行爲。
永遠不要盲目追加貨幣符號(假定append是貨幣符號的區域適當位置)。 I18n-不安全的做法。同樣以「#¤」字符串(前綴貨幣符號的語言環境,這是不正確的)
有一個代碼片段在https://stackoverflow.com/a/15343675/702345
但要小心:
我試着爲USD使用getSymbol,然後返回美元符號(正確),但如果我使用EUR或DKK作爲貨幣代碼,那麼結果是EUR或DKK http:// ideone。com/ehmlP – artjomka 2010-10-08 09:27:33
使用什麼符號取決於所使用的語言環境。請參閱我的(更新)答案 – Nivas 2010-10-08 10:09:50
中的文章據我瞭解,如果我想顯示適當的貨幣符號,我需要保持區域設置格式的值我需要我正確(例如要正確顯示英鎊貨幣符號,我需要有英鎊貨幣映射例如在Locale.UK)? – artjomka 2010-10-08 10:29:57