如何将字符串3.0E-4转换为十进制数

4

我有一个字符串"3.0E-4",它应该是一个十进制数。

请指导如何将其转换为十进制数。

3个回答

7

谢谢,这看起来已经过时了,我没有看到带有CultureInfo的重载。 - khoailang
2
@khoailang 过时了吗?绝对不是,Decimal.Parse(String, NumberStyles, IFormatProvider) 重载自 .NET 2.0 起就存在了。你确定吗?你的环境是什么? - Soner Gönül

3

试试这个:

decimal x = Decimal.Parse("3.0E-4", NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint);

或者像这样。
decimal x = Decimal.Parse("3.0E-4", NumberStyles.Any, CultureInfo.InvariantCulture);

1

使用 .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!");
    }
}

enter image description here

查看此处获取更多信息,了解为什么应该优先使用TryParse。


谢谢,我尝试使用十进制,但无法解析该字符串,TryParse 返回 false! - khoailang
正确,你必须使用 float。对我来说,decimal 也不起作用 - 这就是我发布这个帖子的原因。@khoailang - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接