PIC*_*ain 48 c# parsing decimal number-formatting
我试图将像"$ 45.59"这样的字符串解析为小数.出于某种原因,我得到的例外是输入格式不正确.我并不关心所有本地化的东西,因为这不是一个全球性的计划.这就是我在做的事情.你看到有什么问题吗?
NumberFormatInfo MyNFI = new NumberFormatInfo();
MyNFI.NegativeSign = "-";
MyNFI.NumberDecimalSeparator = ".";
MyNFI.NumberGroupSeparator = ",";
MyNFI.CurrencySymbol = "$";
decimal d = decimal.Parse("$45.00", MyNFI); // throws exception here...
Run Code Online (Sandbox Code Playgroud)
Joh*_*ner 102
如何使用:
decimal d = decimal.Parse("$45.00", NumberStyles.Currency);
Run Code Online (Sandbox Code Playgroud)
Decimal.Parse上的MSDN文档说明:
"使用NumberStyles.Number样式解释s参数.这意味着允许使用空格和千位分隔符,但不允许使用货币符号.要明确定义可以使用的元素(如货币符号,千位分隔符和空格)在s中,使用Decimal.Parse(String,NumberStyles,IFormatProvider)方法
小智 14
这样它对我有用:
NumberFormatInfo MyNFI = new NumberFormatInfo();
MyNFI.NegativeSign = "-";
MyNFI.CurrencyDecimalSeparator = ".";
MyNFI.CurrencyGroupSeparator = ",";
MyNFI.CurrencySymbol = "$";
decimal d = decimal.Parse("$45.00", NumberStyles.Currency, MyNFI);
Run Code Online (Sandbox Code Playgroud)
1.)您必须定义货币分隔符而不是数字分隔符.2.)因为您只定义了货币值,所以您需要在解析时定义NumberStyles.Currency.