2017-02-23 65 views
4

我想使用string.Format格式化一個價格。我能夠得到正確的貨幣符號,但無法計算出正則表達式始終有2個小數位,無論它們是否爲0。這裏是我的代碼:String.Format與CultureInfo C結合使用#

CultureInfo us = CultureInfo.GetCultureInfo("en-US"); 
price.text = string.Format(us, "{0:C}",inventory.priceTotal); 
+0

[你的代碼工作正常](https://dotnetfiddle.net/Cn3sfq),問題必須是某處/其他地方。 – DavidG

+2

最好的猜測是你的'inventory.priceTotal'字段不是數字類型。如果它不是數字類型(例如字符串),那麼'string.Format()'操作對它沒有影響。 – NightOwl888

回答

4

添加2C所以C2

string.Format(us, "{0:C2}",inventory.priceTotal); 

Standard Numeric Format Strings

+0

當小數點爲0時,仍然只顯示1位小數,除非美元值爲1位。因此,$ 9.90將按預期工作,但$ 10.10將顯示爲$ 10.1 –

+0

@LewisSeddon - 我無法再現:'Console.WriteLine(string.Format(System.Globalization.CultureInfo.GetCultureInfo(「en-US」),「{0:C2 }「,10.1));'產生字符串'」$ 10.10「' – Igor

+0

您不需要指定'C2',只需'C'就足夠了。 OP代碼已經正常工作。 – DavidG

0

見想想我的庫存代碼是一個爛攤子。我將字符串解析爲雙精度,然後通過.ToString()將它們傳遞給.text。我想我會將符號中的數字分開,並且獨立地動態設置符號。