问题parsing货币文本为十进制types
我试图parsing一个string像“$ 45.59”到十进制。 出于某种原因,我得到的例外是input的格式不正确。 我不关心所有的本地化的东西,因为这不会是一个全球性的计划。 这是我正在做的。 你有什么问题吗?
NumberFormatInfo MyNFI = new NumberFormatInfo(); MyNFI.NegativeSign = "-"; MyNFI.NumberDecimalSeparator = "."; MyNFI.NumberGroupSeparator = ","; MyNFI.CurrencySymbol = "$"; decimal d = decimal.Parse("$45.00", MyNFI); // throws exception here...
如何使用:
decimal d = decimal.Parse("$45.00", NumberStyles.Currency);
Decimal.Parse上的MSDN文档指出:
“s参数是使用NumberStyles.Number风格解释的,这意味着可以使用空格和数千个分隔符,但是货币符号不是,要显式地定义可以使用的元素(例如货币符号,数千个分隔符和空格)在s中使用Decimal.Parse(String,NumberStyles,IFormatProvider)方法
这样它适用于我:
NumberFormatInfo MyNFI = new NumberFormatInfo(); MyNFI.NegativeSign = "-"; MyNFI.CurrencyDecimalSeparator = "."; MyNFI.CurrencyGroupSeparator = ","; MyNFI.CurrencySymbol = "$"; decimal d = decimal.Parse("$45.00", NumberStyles.Currency, MyNFI);
1.)您必须定义货币分隔符而不是数字分隔符。 2)因为你只定义了货币值,你需要在parsing时定义NumberStyles.Currency。