2

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

让我们说

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 ?

4

2 回答 2

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);
于 2013-06-10T10:45:38.207 回答
0

尝试这个

 Boolean c= decimal.TryParse("3.24E-08", System.Globalization.NumberStyles.Float, null, out a);
于 2013-06-10T10:57:41.710 回答