将0.0转换为双倍有什么问题?
当我尝试将0.0转换为double时,我有InvalidCastException
,为什么会这样? 我做(float)value
时很好。
通常,当您将值类型放入object
(称为装箱 )时,您需要将其拆分为完全相同的值类型。 您无法转换为其他类型。 这就是这里发生的事情。
如果您真的想要转换对象, 首先需要将其解包。 假设您的原始值在将其装入object
之前是float
:
double d = (double) (float) value;
或者使用其他人提出的使用Convert
。 这具有不必知道原始类型的优点。
这很正常。 如果对象类型为float
,则无法将其转换为double
因为它们的类型不同:
object o = 1.0f; double d = (double)o; // will throw an exception
你需要转换它:
double d = Convert.ToDouble(o);
浮动已被装箱作为对象。 因此,您正在尝试将盒装浮动转换为双精度浮动。 使用Vyas的转换 – 它更灵活,应该始终做正确的事情:
var val=Convert.ToDouble(value);
用这个
var val=Convert.ToDouble(value);
您不能将任意对象强制转换为double
。