2011-04-05 31 views
0

我有我通過顯示一個領域:對於使用String.Format創建的貨幣字符串,decimal.parse失敗?

String.Format({0:c},amount) 

這將產生字符串「$ 28.28」

然而,當我試圖回到轉換爲十進制量,我得到一個不正確的格式異常:

amount = Decimal.Parse(amount.Text, NumberStyles.Currency) 

我也試着用NumberStyles.AllowCurrencySymbol和它一樣的結果。我確認了amount.Text中的值是「$ 28.28」。

我錯過了什麼嗎?這兩個操作不應該使用相同的貨幣符號和格式嗎?

+0

「Format」操作產生的字符串是什麼? – Oded 2011-04-05 18:54:39

+0

當輸入來自用戶(或代碼外部的任何東西)時,我還建議您使用Decimal.TryParse而不是.Parse。 – 2011-04-05 19:05:22

+0

這不就是解析的重點:按照http://msdn.microsoft.com/en-us/library/91fwbcsb%28v=VS.90%29.aspx獲取NumberStyles.Currency嗎? – chris 2011-04-05 19:06:02

回答

2
var amount = decimal.Parse("$28.28", NumberStyles.Currency); 

適合我。確保你的輸入字符串是你的想法。

+0

很奇怪。重新啓動IIS,現在它可以工作。某些東西一定會弄亂本地化設置。 – chris 2011-04-05 19:21:25

0

這些在不同的機器上嗎? 機器設置不同。 默認格式在控制面板區域設置中設置。