2010-01-06 29 views
2

在印度和其他亞洲國家,貨幣格式如下: 前三位數字分組爲三位,然後所有其他數字分組爲兩位一組。 例如:2,54,255.12 5,22,54,255.12等 string money = String.Format(「{0:#,## 0.00}」,254255.12);如何使用亞洲格式格式化貨幣

使輸出254,255.12

,但所需的輸出2,54,255.12

回答

14

使用合適的CultureInfo和 「C」 格式說明:

CultureInfo hindi = CultureInfo.CreateSpecificCulture("hi-IN"); 
string text = string.Format(hindi, "{0:c}", 254255.12); 

請注意,你應該使用decimal而不是double貨幣值,以避免二進制浮點問題。

+1

+1從不使用浮點數進行貨幣計算。 – slebetman

+0

你的意思是不要使用二進制浮點數......'decimal'仍然是一個浮點類型。 –

+0

是*二進制*在這裏是正確的術語?在內存中是不是'decimal'值在二進制中表示?我相信'decimal「被表示爲一個16字節(二進制)整數和相關(二進制)比例因子。這是缺乏單獨的尾數和指數,減少舍入誤差等。 – MarkJ

1

這是一個簡單的方法:

System.Globalization.CultureInfo ci = 
    System.Globalization.CultureInfo.GetCultureInfo("hi-IN"); 
Console.WriteLine((123456789.87).ToString("N", ci)); 

注意,這是與在格式提供商/文化對象正確配置的NumberFormatInfo結構來實現的。你可以創建自己的文化對象了,如果需要的話:

foreach (int gs in ci.NumberFormat.CurrencyGroupSizes) 
{ 
    Console.WriteLine(gs); 
} 

還要注意的是,如果系統被配置爲使得HI-IN是機器上的本土文化,數字將被格式化這種方式默認爲無必須顯式檢索文化並將其傳遞給格式提供者參數。