4

例如,文本框中的输入字符串是 $10.00 。我打电话

decimal result;
var a = decimal.TryParse(text, NumberStyles.AllowCurrencySymbol, cultureInfo, out result);

cultureInfo已知 ( en-US)。为什么decimal.tryParse返回false?

谢谢你。

4

3 回答 3

10

问题是您已经允许货币符号本身,但是您省略了正确解析它所需的其他属性(例如小数点。)您真正想要的是NumberStyles.Currency

decimal.TryParse("$10.00", NumberStyles.Currency, cultureInfo, out result);
于 2013-06-03T13:41:02.433 回答
2

试试这个,你需要包含NumberStyles.Numberstyle参数值的按位组合中:

decimal result;
var a = decimal.TryParse(text, NumberStyles.Number | NumberStyles.AllowCurrencySymbol, cultureInfo, out result);
于 2013-06-03T13:40:29.603 回答
0

你也忘了允许小数点:

decimal result;
var enUS = new System.Globalization.CultureInfo("en-US");
var a = decimal.TryParse("$10.00", System.Globalization.NumberStyles.AllowCurrencySymbol | System.Globalization.NumberStyles.AllowDecimalPoint , enUS, out result);

Console.WriteLine(enUS);
Console.WriteLine(a);
Console.WriteLine(result);
于 2013-06-03T13:44:56.827 回答