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

时间:2013-06-10 10:37:45

标签: c# string type-conversion 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);

它总是将成功归为虚假。

如何解析得到0.00000003244657?

2 个答案:

答案 0 :(得分:5)

您可以将TryParseNumberStyles参数一起使用:

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

我使用过的NumberStyles.Any

  

表示使用除AllowHexSpecifier之外的所有样式。这是一个   复合数字样式。

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

var ok = Decimal.TryParse(secondsStr, NumberStyles.Float, CultureInfo.InvariantCulture, out secondsValue);

答案 1 :(得分:0)

试试这个

 Boolean c= decimal.TryParse("3.24E-08", System.Globalization.NumberStyles.Float, null, out a);