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

时间:2016-01-21 11:38:23

标签: 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);
    }
}

1 个答案:

答案 0 :(得分:6)

我不了解反射,但您可以使用AllowDecimalPoint, AllowExponent and AllowLeadingSign styles.作为NumberDecimalSeparator InvariantCulture的文化来组合此字符串,例如var s = "-6.379885574693132E-10"; var d = decimal.Parse(s, NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture); ; < / p>

NumberStyles.Float

或者更简单,您可以使用包含所有这些样式的var s = "-6.379885574693132E-10"; var d = decimal.Parse(s, NumberStyles.Float, CultureInfo.InvariantCulture);

cv::threshold

enter image description here