为什么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文档)。
答案 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标志,或使用复合样式 包括这些单独的旗帜。