我有存儲在一個數據庫相關的貨幣量的值,說10.0。我也可以訪問貨幣/貨幣代碼。我如何使用的NumberFormat/DecimalFormat的/(其他?)我不知道的Locale格式化?根據文檔,它將選擇一個默認語言環境,該語言環境不適用於外幣。Java:貨幣到區域設置映射可能嗎?
15
A
回答
15
一般來說,正確的行爲是格式化用戶首選語言環境中的金額,而不是貨幣的典型語言環境。在客戶端,您將擁有用戶的偏好(Locale.getDefault());如果你正在做的網站服務器端的東西,使用接受語言,或最好,頁面內容的語言環境,以獲得正確的語言環境。
原因是這樣的: 的英語(美國)的用戶會明白€10,000,000.15但不是適合換德國相當於€10.000.000,15
貨幣本身不包含足夠的信息來推斷無論如何,這是一個合適的區域。
2
如果貨幣代碼是EUR什麼?而且,雖然它已經受到打擊,但美元仍然在全世界使用。從貨幣代碼推斷區域設置似乎不可靠。你能介紹一個明確的用戶偏好的語言環境嗎?
你正在尋找的信息不是內置Java數據庫貨幣的一部分,所以沒有爲它的API。對於許多毫不含糊的情況,你可以使用create your own table。
0
我要說的是,如果您的數據庫存儲的幣值應該掛到單位在同一時間。聽起來你現在正在這樣做。您可以同時將區域設置添加到數據庫嗎?可能是一個體面的解決方案
23
JasonTrue是正確的,但是你可以重寫NumberFormat的語言環境的貨幣:
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(locale);
//the user may have selected a different currency than the default for their locale
Currency currency = Currency.getInstance("GBP");
numberFormat.setCurrency(currency);
numberFormat.format(amount);
0
這裏有一個方法來確定從貨幣代碼
let locale = NSLocale(localeIdentifier: NSLocale.canonicalLocaleIdentifierFromString(NSLocale.localeIdentifierFromComponents([NSLocaleCurrencyCode: currencyCode])))
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.currencyCode = currencyCode
formatter.locale = locale
formatter.maximumFractionDigits = 2
formatter.stringFromNumber(number)
的語言環境
相關問題
- 1. python區域設置貨幣和負數
- 2. Rails,貨幣區域設置的編號
- 3. 區域設置貨幣符號
- 4. 從USD到瀏覽器的區域設置貨幣的jQuery格式貨幣?
- 5. 如何在Java中爲區域設置貨幣格式
- 6. 貨幣符號映射到貨幣符號
- 7. 如何通過貨幣代碼設置iOS NSNumberFormatter區域設置?
- 8. 添加AngularJS貨幣區域設置到最後
- 9. cakephp格式貨幣區域
- 10. Magento與2個區域和2種貨幣的多區域設置
- 11. 用戶當前區域設置的貨幣符號
- 12. Zend貨幣歐元與英語區域設置
- 13. toLocaleString顯示區域設置貨幣在IE上不起作用
- 14. 根據動態貨幣值動態更改區域設置
- 15. web.config需要設置爲南非的區域和貨幣
- 16. 區域設置的有效貨幣格式
- 17. 如何根據LUA中的區域設置貨幣格式
- 18. ZendFramework 2:區域設置貨幣值的形式
- 19. 將貨幣格式化爲區域設置特定格式
- 20. 獲取貨幣基於區域設置的ISO 4217代碼
- 21. 更改貨幣格式的默認區域設置行爲
- 22. 使用ICU C API顯示區域設置貨幣符號?
- 23. 如何按照區域設置隱藏貨幣ID
- 24. devexpress樞軸字段的貨幣區域設置
- 25. 沒有獲取特定區域設置的貨幣符號
- 26. ICU貨幣區域設置獲取面值
- 27. Angular JS,時區,貨幣和區域
- 28. 將中心映射到可見區域
- 29. 根據貨幣代碼將貨幣格式設置爲貨幣
- 30. 映射區域