将非常小的数字字符串转换为十进制

Pan*_*kaj 2 c# string decimal type-conversion

我想将一个非常小的数字转换为十进制数,

让我们说吧

String secondsStr = 0;
Decimal secondsValue;
Boolean success = Decimal.TryParse(secondsStr, out secondsValue);
Run Code Online (Sandbox Code Playgroud)

但问题是我有它的字符串表示,3.24E-08

String secondsStr = 3.24E-08;
Decimal secondsValue;
Boolean success = Decimal.TryParse(secondsStr, out secondsValue);
Run Code Online (Sandbox Code Playgroud)

它总是将成功归为虚假.

如何解析得到0.00000003244657?

Tim*_*ter 5

您可以使用TryParse与NumberStyles参数:

var ok = Decimal.TryParse(secondsStr, NumberStyles.Any, null, out secondsValue);
Run Code Online (Sandbox Code Playgroud)

我用过NumberStyles.Any哪些作品.

指示使用除AllowHexSpecifier之外的所有样式.这是一种复合数字样式.

更新:如果它适用NulberStyles.Float取决于当前的文化.如果它.用作小数分隔符,它可以工作.所以你也可以使用CultureInfo.InvariantCulture第三个参数:

var ok = Decimal.TryParse(secondsStr, NumberStyles.Float, CultureInfo.InvariantCulture, out secondsValue);
Run Code Online (Sandbox Code Playgroud)