我试过这两个代码:
1)
Decimal h2 = 0;
Decimal.TryParse("-8.13E-06", out h2);
2)
Decimal.Parse(Convert.ToString(used[row, column].Value), NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint);
但它不适用于 -8.13E-06 值。
将科学记数法转换为十进制的任何其他更好的选项?
先谢谢。
答案 0 :(得分:4)
如果您的文化使用"。"作为分隔符:
decimal d = Decimal.Parse("-8.13E-06", System.Globalization.NumberStyles.Float);
或者您可以指定InvariantCulture
:
decimal d = Decimal.Parse("-8.13E-06", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture);
或在你的例子中:
Decimal h2 = 0;
Decimal.TryParse("-8.13E-06", NumberStyles.Float, CultureInfo.InvariantCulture, out h2);
答案 1 :(得分:1)
AllowExponent不会按照以下方式工作: https://msdn.microsoft.com/en-us/library/system.globalization.numberstyles(v=vs.110).aspx
表示数字字符串可以是指数表示法。 AllowExponent标志允许解析的字符串包含指数 以“E”或“e”字符开头,后跟一个 可选的正号或负号和整数。换句话说,它 成功解析nnnExx,nnnE + xx和nnnE-xx形式的字符串。 它不允许小数点分隔符或有效数字符号或 尾数;要允许解析字符串中的这些元素,请使用 AllowDecimalPoint和AllowLeadingSign标志,或使用复合样式 包括这些单独的旗帜。
System.Globalization.NumberStyles.Float是一种复合风格