【发布时间】:2016-04-27 15:24:12
【问题描述】:
我有一个字符串"-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);
}
}
【问题讨论】:
-
你试过
decimal.Parse吗? -
为什么需要反思?
-
@TimSchmelter 这只是一个小例子,在我的情况下需要它。
-
@emptyman 注意
Convert.ChangeType("-6.379885574693132E-10", TypeCode.Object).GetType().FullName;返回System.String。您正在尝试将string分配给decimal -
Convert.ChangeType 的工作是将一种类型转换为另一种类型,而不是解析文本。将文本转换为数字类型时,它将使用当前区域性的数字格式。要解析类型,请使用该类型的
Parse方法(如果可用)。在这种情况下,请使用decimal.Parse
标签: c#