用科学记数法解析十进制

本文关键字:十进制 | 更新日期: 2023-09-27 17:49:15

我有点困惑,为什么NumberStyles.AllowExponent单独不解析我的十进制科学记数法。

抛出一个异常:

Decimal.Parse("4.06396113432292E-08",
    System.Globalization.NumberStyles.AllowExponent)

然而,这不是:

Decimal.Parse("4.06396113432292E-08",
    System.Globalization.NumberStyles.AllowExponent
    | System.Globalization.NumberStyles.Float)

我没有看到NumberStyle.Float添加了什么(我不理解MSDN文档)

用科学记数法解析十进制

From MSDN:

NumberStyle。浮动
表示使用AllowLeadingWhite、AllowTrailingWhite、AllowLeadingSign、AllowDecimalPoint和AllowExponent样式。这是一个合数样式。

如果你不允许小数点,4.06...将不会解析。

注意NumberStyle.Float还包括AllowExponent,所以您不需要单独指定。这应该可以自己工作:

Decimal.Parse("4.06396113432292E-08", System.Globalization.NumberStyles.Float)

System.Globalization.NumberStyles。AllowExponent允许解析的字符串包含以"E"或"E"字符开头的指数。

要允许在有效位数或尾号中使用小数分隔符或符号,必须使用System.Globalization.NumberStyles.Float.

来自MSDN的注释: AllowExponent

It 不允许在有效位中使用小数分隔符或符号尾数;要允许解析字符串中的这些元素,请使用AllowDecimalPoint和AllowLeadingSign标志,或者使用复合样式包括这些单独的标志。