如何将这种科学记数法转换为十进制?

在谷歌搜索后,使用下面的代码仍然无法编译

decimal h = Convert.ToDecimal("2.09550901805872E-05"); decimal h2 = Decimal.Parse("2.09550901805872E-05", System.Globalization.NumberStyles.AllowExponent); 

您还必须添加NumberStyles.AllowDecimalPoint

 Decimal.Parse("2.09550901805872E-05", NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint); 

MSDN很清楚:

表示数字字符串可以是指数表示法。 AllowExponent标志允许解析的字符串包含以“E”或“e”字符开头的指数,后跟可选的正号或负号以及整数。 换句话说,它成功地以nnnExx,nnnE + xx和nnnE-xx的forms解析字符串。 它不允许使用小数分隔符或在有效数字或尾数中签名; 要允许解析字符串中的这些元素,请使用AllowDecimalPoint和AllowLeadingSign标志 ,或使用包含这些单独标志的复合样式。

使用System.Globalization.NumberStyles.Any

 decimal h2 = Decimal.Parse("2.09550901805872E-05", System.Globalization.NumberStyles.Any); 

由于小数点分隔符(字符串中的“。”)因文化而异,因此使用不变文化更安全。 别忘了允许这个小数点分隔符(NumberStyles.Float)

  decimal h = Decimal.Parse("2.09550901805872E-05", NumberStyles.Float | NumberStyles.AllowExponent, CultureInfo.InvariantCulture); 

Perharps,更方便的代码就是当我们使用NumberStyles.Any时:

  decimal h = Decimal.Parse("2.09550901805872E-05", NumberStyles.Any, CultureInfo.InvariantCulture); 
 Decimal h2 = 0; Decimal.TryParse("2.005E01", out h2);