当我尝试将0.0转换为双倍时我有InvalidCastException
,为什么会这样?我做(float)value
时很好。
答案 0 :(得分:60)
通常,当您将值类型放入object
(称为拳击)时,您需要取消它完全相同< / em>值类型。您无法转换为其他类型。这就是这里发生的事情。
如果您真的想要转换对象,那么首先需要将其解包。假设您的原始值为float
,然后在object
:
double d = (double) (float) value;
或者使用其他人提出的使用Convert
的方法。这样做的好处是不必知道原始类型。
答案 1 :(得分:11)
这是正常的。如果对象类型为float
,则无法将其转换为double
,因为它们的类型不同:
object o = 1.0f;
double d = (double)o; // will throw an exception
你需要转换它:
double d = Convert.ToDouble(o);
答案 2 :(得分:4)
浮动已被装箱作为对象。因此,您正在尝试将盒装浮动转换为双精度浮动。使用Vyas的转换 - 它更灵活,应该始终做正确的事情:
var val=Convert.ToDouble(value);
答案 3 :(得分:3)
使用此
var val=Convert.ToDouble(value);
答案 4 :(得分:3)
您无法将任意对象强制转换为double
。