【问题标题】:Why does NumberStyles.Any not allow the percent symbol?为什么 NumberStyles.Any 不允许使用百分号?
【发布时间】:2019-02-15 00:22:11
【问题描述】:

当解析为小数时,您可能很想解析像“23.393%”这样的数字,但如果不手动去除百分号 (%),这将无法正常工作。我希望这一行返回 true:

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

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

(注意:我正在使用 C#,但底层的 TryParse 函数也应该使用 VB.NET 和其他 .NET 语言,所以这个问题也适用于它们)

【问题讨论】:

    标签: .net


    【解决方案1】:

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

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

    这并不意味着任何事情都会发生。它仅表示NumberStyles 枚举中的任何其他特定 条目都有效(当然,AllowHexSpecifier 除外)。 这些数字样式中没有一个与百分号或此处的格式有关。最接近的是AllowTrailingSign,但阅读该样式的注释我们会看到:

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

    那里没有百分比选项。看来您必须自己管理这种格式。

    【讨论】:

    • 感谢您的澄清!请注意,最初的问题是为什么不包括百分号。他们是否只针对货币(显然不是,因为十六进制选项)?
    猜你喜欢
    • 2018-06-09
    • 2015-12-02
    • 1970-01-01
    • 2017-12-10
    • 2014-11-25
    • 2012-12-28
    • 2019-03-11
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多