将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