为什么NumberStyles.Any不允许使用百分号?

时间:2019-02-15 00:22:11

标签: .net

当解析为小数时,您可能非常想解析“ 23.393%”之类的数字,但是如果不手动剥离百分号(%),这将不起作用。我希望这行返回true:

Decimal.TryParse("31.7%",System.Globalization.NumberStyles.Any, null, out var dec)

System.Globalization.NumberStyles.Any的文档似乎表明它应该允许任何类型的(十进制)数字格式。是否有未包含百分比的原因?

  

(注意:我使用的是C#,但是底层的TryParse函数也应该使用VB.NET和其他.NET语言,因此此问题也适用于它们)

1 个答案:

答案 0 :(得分:2)

我认为您误读了该文档。 Any的注释是这样的:

  

使用除AllowHexSpecifier之外的所有样式。这是一种复合数字样式。

这并不意味着一切正常。它仅表示NumberStyles枚举工作中的其他任何 specific 条目(当然,AllowHexSpecifier除外)。这些数字样式中的 与百分号或此处的格式有关。最接近的是AllowTrailingSign,但是阅读该样式的注释后,我们会看到:

  

有效的尾随符号由PositiveSign和NegativeSign属性确定。

没有百分比选项。看来您将不得不自己管理这种格式。