转换为十进制 - 输入字符串格式不正确

MrP*_*ram 1 c#

我有一个字符串"-6.379885574693132E-10",我无法转换为十进制..它是大吗?有可能解决这个问题吗?

错误:

输入字符串格式不正确

public class Program {
    private static void Main(string[] args) {
        Foo foo = new Foo();
        var str = "-6.379885574693132E-10";
        foo.SetPropertyValue("myVal", str);
    }
}

public class Foo {

    public decimal myVal { get; set; }

    public void SetPropertyValue(string propertyName, object value) {
        var propertyInfo = GetType().GetProperty(propertyName);
        propertyInfo.SetValue(this,
            Convert.ChangeType(value, propertyInfo.PropertyType, CultureInfo.InvariantCulture), null);
    }
}
Run Code Online (Sandbox Code Playgroud)

Son*_*nül 6

我不知道反思知识,但你可以解析这个字符串的组合AllowDecimalPoint,AllowExponent并且AllowLeadingSign样式与具有文化.作为一个NumberDecimalSeparator喜欢InvariantCulture的;

var s = "-6.379885574693132E-10";
var d = decimal.Parse(s, NumberStyles.AllowDecimalPoint | 
                         NumberStyles.AllowExponent | 
                         NumberStyles.AllowLeadingSign, 
                         CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

或者更简单,您可以使用NumberStyles.Float包含所有这些样式的内容.

var s = "-6.379885574693132E-10";
var d = decimal.Parse(s, NumberStyles.Float, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @JeppeStigNielsen&Soner:谢谢你们俩.我认为我无法避免它并且它不是浏览器设置(我使用的是chrome).我认为这与谷歌有关.我总是得到本地化的结果(由我的IP决定),包括德国MSDN链接.你不能轻易关掉它.如果我在`www.google.co.uk`搜索,我会看到英文链接.也许我会尝试firefox/chrome扩展[GoogleGlobal](https://www.redflymarketing.com/internet-marketing-tools/google-global/) (2认同)