小数。解析字符串,后缀为减号

时间:2013-06-17 12:51:19

标签: c#

decimal decimalVal;
Decimal.TryParse("123-", out decimalVal);
Console.WriteLine(decimalVal); // -123

为什么用这种方式解析“123-”字符串?

4 个答案:

答案 0 :(得分:11)

Decimal.TryParse Method默认使用NumberStyles.Number解析输入。 NumberStyles.Number包括NumberStyles.AllowTrailingSign

  

Decimal.TryParse方法(String,Decimal)

     

[...]
  使用NumberStyles.Number样式解释参数s   [...]

  

<强>数   指示使用AllowLeadingWhite,AllowTrailingWhite,AllowLeadingSign,AllowTrailingSign,AllowDecimalPoint和AllowThousands样式。这是一种复合数字样式。

     

<强> AllowTrailingSign   表示数字字符串可以有尾随符号。有效的尾随符号字符由NumberFormatInfo.PositiveSign和NumberFormatInfo.NegativeSign属性确定。

答案 1 :(得分:1)

默认情况下使用NumberStyles.Number枚举器:

表示使用AllowLeadingWhite,AllowTrailingWhite,AllowLeadingSign,AllowTrailingSign,AllowDecimalPoint和AllowThousands样式。这是一个复合数字样式

http://msdn.microsoft.com/en-us/library/system.globalization.numberstyles.aspx

答案 2 :(得分:1)

NumberNegativePattern仅用于字符串输出,但在解析时将被忽略。 为了进行解析,使用了另一个参数:NumberStyles

在您的示例中,

Convert.ChangeType路由到decimal.Parse,因此,如果您直接使用正确的重载,则可以指定不允许尾随符号:

var result = decimal.Parse("123-", NumberStyles.Number & ~NumberStyles.AllowTrailingSign); // will throw an exception

答案 3 :(得分:0)

这是Decimal.Parse的可接受格式。 style方法的Parse选项允许使用前导和尾随符号。

了解详情:http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx