我有一个字符串"-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);
}
}
答案 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