2

非常に小さい数値を Decimal に変換したいのですが、

まあ言ってみれば

String secondsStr = 0;
Decimal secondsValue;
Boolean success = Decimal.TryParse(secondsStr, out secondsValue);

しかし問題は、3.24E-08 という文字列表現を持っていることです。

String secondsStr = 3.24E-08;
Decimal secondsValue;
Boolean success = Decimal.TryParse(secondsStr, out secondsValue);

常に false として成功を返します。

それを解析して 0.00000003244657 を取得するにはどうすればよいですか?

4

2 に答える 2

5

TryParse次のNumberStyles引数を使用できます。

var ok = Decimal.TryParse(secondsStr, NumberStyles.Any, null, out secondsValue);

私はNumberStyles.Anyどちらが機能するかを使用しました。

AllowHexSpecifier 以外のすべてのスタイルが使用されることを示します。これは合成数スタイルです。

更新: 動作するNulberStyles.Floatかどうかは、現在の文化によって異なります。.小数点として使用すると機能します。CultureInfo.InvariantCultureしたがって、3 番目の引数としても使用できます。

var ok = Decimal.TryParse(secondsStr, NumberStyles.Float, CultureInfo.InvariantCulture, out secondsValue);
于 2013-06-10T10:45:38.207 に答える