Googleで検索した後、以下のコードを使用してもコンパイルできません:
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 の形式の文字列を正常に解析します。 仮数部または仮数部に小数点または記号を使用することはできません。文字列内のこれらの要素を解析できるようにするには、AllowDecimalPoint および AllowLeadingSign フラグを使用するか、これらの個々のフラグを含む複合スタイルを使用します。
使用するSystem.Globalization.NumberStyles.Any
decimal h2 = Decimal.Parse("2.09550901805872E-05", System.Globalization.NumberStyles.Any);
(文字列内の)小数点記号は文化によって異なる可能性があるため
、使用する方が安全です。この小数点記号 ( )を許可することを忘れないでください。"."
InvariantCulture
NumberStyles.Float
decimal h = Decimal.Parse(
"2.09550901805872E-05",
NumberStyles.Float | NumberStyles.AllowExponent,
CultureInfo.InvariantCulture);
おそらく、より便利なコードは、次を使用する場合NumberStyles.Any
です。
decimal h = Decimal.Parse(
"2.09550901805872E-05",
NumberStyles.Any,
CultureInfo.InvariantCulture);