用科学计数法解析小数

时间:2014-03-10 02:33:39

标签: c# parsing decimal

为什么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 个答案:

答案 0 :(得分:5)

来自MSDN

  

NumberStyle.Float
  指示使用AllowLeadingWhite,AllowTrailingWhite,AllowLeadingSign, AllowDecimalPoint 和AllowExponent样式。这是一种复合数字样式。

如果您不允许小数点,4.06...将无法解析。

请注意,NumberStyle.Float还包含AllowExponent,因此您无需单独指定。这本身应该有效:

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

来自MSDN的说明: 的 AllowExponent

  

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