为什么FormatException
使用转换为十进制时,该指数会抛出a Decimal.Parse
?
String stringValue = "8.83080183680678E-05";
Decimal decimalValue = Decimal.Parse(badValue, NumberStyles.AllowExponent);
当代码执行时,它抛出一个 FormatException
“输入字符串的格式不正确。”
该代码似乎符合MSDN规范:[ws][$][sign][digits,]digits[.fractional-digits][e[sign]digits][ws]
您需要指定数字格式还允许使用小数。
Decimal.Parse(badValue, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint);
...在AllowExponent文档中对此进行了说明:
表示数字字符串可以采用指数表示法。AllowExponent标志允许解析的字符串包含以“ E”或“ e”字符开头,后跟可选的正号或负号以及整数的指数。换句话说,它成功解析了nnnExx,nnnE + xx和nnnE-xx形式的字符串。不允许使用小数点分隔符或有效数字或尾数。若要允许解析字符串中的这些元素,请使用AllowDecimalPoint和AllowLeadingSign标志,或者使用包含这些单独标志的复合样式。
NumberStyles.Float
在这种情况下可能是一个更好的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句