decimal.TryParse返回false

时间:2013-06-03 13:35:48

标签: c# decimal currency cultureinfo

文本框中的输入字符串是10.00美元。我打电话给

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

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

谢谢。

3 个答案:

答案 0 :(得分:9)

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

decimal.TryParse("$10.00", NumberStyles.Currency, cultureInfo, out result);

答案 1 :(得分:2)

试试这个,您需要在NumberStyles.Number参数的值的按位组合中包含style

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

答案 2 :(得分: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);