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

本文关键字:字符串 转换 十进制 数字字符 数字 非常 | 更新日期: 2023-09-27 18:17:47

我想把一个很小的数字转换成十进制,

让说

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

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

您可以使用TryParseNumberStyles参数:

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

我已经使用了NumberStyles.Any,这是有效的。

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

Update:如果它适用于NulberStyles.Float取决于当前区域性。如果它使用.作为十进制分隔符,它可以工作。所以你也可以使用CultureInfo.InvariantCulture作为第三个参数:

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

试试这个

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