decimal decimalVal;
Decimal.TryParse("123-", out decimalVal);
Console.WriteLine(decimalVal); // -123为什么"123-“字符串是这样解析的?
发布于 2013-06-17 20:57:07
默认情况下,Decimal.TryParse Method使用NumberStyles.Number解析输入。NumberStyles.Number包括NumberStyles.AllowTrailingSign。
Decimal.TryParse Method (String,Decimal)
..。
参数s使用NumberStyles.Number样式进行解释。
... Number表示使用AllowLeadingWhite、AllowTrailingWhite、AllowLeadingSign、AllowTrailingSign、AllowDecimalPoint和AllowThousands样式。这是一种复合数字样式。
AllowTrailingSign -指示数字字符串可以有尾随符号。有效的尾随符号字符由NumberFormatInfo.PositiveSign和NumberFormatInfo.NegativeSign属性确定。
发布于 2013-06-17 21:01:50
默认情况下使用NumberStyles.Number枚举器:
指示使用AllowLeadingWhite、AllowTrailingWhite、AllowLeadingSign、AllowTrailingSign、AllowDecimalPoint和AllowThousands样式。这是一种复合数字样式
http://msdn.microsoft.com/en-us/library/system.globalization.numberstyles.aspx
发布于 2018-10-23 21:52:12
NumberNegativePattern仅用于字符串输出,但在解析时被忽略。对于解析,使用了另一个参数:NumberStyles。
在您的示例中,Convert.ChangeType路由到decimal.Parse,因此,如果您直接使用正确的重载,则可以指定不允许使用尾随符号:
var result = decimal.Parse("123-", NumberStyles.Number & ~NumberStyles.AllowTrailingSign); // will throw an exceptionhttps://stackoverflow.com/questions/17147919
复制相似问题