2010-07-27 29 views
5

許多語言,如.NET languagesJava都帶有內置的貨幣格式化工具。他們所做的是使用文化特定的數字格式來格式化數字,並添加文化的貨幣符號。貨幣格式化功能是否有用?

這裏的問題是數字格式與貨幣符號強烈耦合。在實踐中,數字格式對於周圍文本的語言應該是正確的,而貨幣符號應該用於被討論的貨幣。例如,在用德語文檔談論美元時,您不會使用美國千分離器。

您能想到這種貨幣格式化功能的實際用途,還是它們存在只是爲了打動注重金錢的管理人員?

+0

貨幣單位的符號總是與分隔符相關聯,還是可以分開? PHP的'money_format'函數可以很好地控制格式化的字符串,包括抑制貨幣符號的能力。 – 2010-07-27 22:26:04

+0

對於希望以本地格式顯示資金的不同國家/地區的用戶使用的全球應用程序,它沒有用處嗎?或者我錯過了這一點? – 2010-07-27 22:28:13

+0

@no:.NET似乎允許你改變貨幣符號(儘管這需要幾行代碼,這是離開乾淨的格式字符串的一步,在某些情況下,你也只允許指定格式字符串) 。我找不到在Java中實現它的方法,但我不完全是Java專家,所以我不能肯定地說。 – 2010-07-27 22:36:38

回答

1

至少在.NET中,數字格式與文化有關,而不是符號。默認貨幣符號是與該文化相關的主要貨幣符號。符號可以根據需要重寫。

就像你的例子,如果我在字符串中嵌入貨幣值,那麼我使用字符串的文化作爲格式,但是適當地覆蓋貨幣符號。其餘格式保持原樣。

另一方面,如果我正在做一個報告,所有的值都使用相同的文化格式。在這種情況下,我通常使用ISO 3字符代碼而不是貨幣符號,尤其是涉及超過2種貨幣時,以避免字體問題。

Ryan's answer to another question介紹了C#中貨幣格式化的最佳實踐。

+0

更改貨幣符號是一個很好的觀點,儘管它需要很多代碼才能讓恕我直言成爲格式參數的一部分。貨幣符號顯示尺寸錯誤(50美元兌50歐元)也很容易出現問題,更不用說某些貨幣實際上會根據地區而改變訂單(50歐元兌50歐元) – 2010-07-27 22:46:49

+1

我最終編寫了一個用'decimal'擴展方法來處理所有的苦差事,有點類似Jon Skeet的例子:http://stackoverflow.com/questions/1071273/currency-formatting/1071302#1071302 – devstuff 2010-07-28 03:22:58