我有一个字符串"3.0E-4"
,它应该是一个十进制数。
请指导如何将其转换为十进制数。
您可以使用 AllowExponent
和 AllowDecimalPoint
样式的组合以及 decimal.Parse
方法,例如;
var result = decimal.Parse("3.0E-4",
NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture);
试试这个:
decimal x = Decimal.Parse("3.0E-4", NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint);
decimal x = Decimal.Parse("3.0E-4", NumberStyles.Any, CultureInfo.InvariantCulture);
使用 .TryParse
可以避免异常处理(如果解析失败,.Parse
将抛出异常):
void Main()
{
var str="3.0E-4";
float d;
if (float.TryParse(str, out d))
{
Console.WriteLine("d = " + d.ToString());
}
else
{
Console.WriteLine("Not a valid decimal!");
}
}
查看此处获取更多信息,了解为什么应该优先使用TryParse。
float
。对我来说,decimal
也不起作用 - 这就是我发布这个帖子的原因。@khoailang - Matt
Decimal.Parse(String, NumberStyles, IFormatProvider)
重载自 .NET 2.0 起就存在了。你确定吗?你的环境是什么? - Soner Gönül