我有一个字符串"-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)
我不知道反思知识,但你可以解析这个字符串的组合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)