在科学计数法中解析小数

5
我有点困惑为什么仅使用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文档)。
3个回答

5

来自MSDN:

NumberStyle.Float
表示使用AllowLeadingWhite、AllowTrailingWhite、AllowLeadingSign、AllowDecimalPoint和AllowExponent样式。这是一个组合数字样式。

如果不允许有小数点,则无法解析4.06...

请注意,NumberStyle.Float还包括AllowExponent,因此您不需要单独指定它。这应该可以单独工作:

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

太棒了,我没有深入研究MSDN。非常感谢你! - tau

3

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

若要允许在尾数或幂中使用小数分隔符或符号,则需要使用 System.Globalization.NumberStyles.Float


2

来自MSDN的说明: AllowExponent

不允许在尾数或指数中使用小数点或符号;若要允许解析字符串中的这些元素,请使用AllowDecimalPoint和AllowLeadingSign标志,或使用包含这些单独标志的组合样式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接