开发者

What's wrong with casting 0.0 to double?

I have Inval开发者_运维问答idCastException when I try to cast 0.0 to double, why is that so? It's fine when I do (float)value instead.

What's wrong with casting 0.0 to double?


In general, when you put a value type into an object (called boxing) you need to unbox it to the exact same value type. You cannot do a conversion to another type instead. This is what happens here.

If you really want to convert the object, you first need to unbox it. Say your original value was a float before you boxed it in an object:

double d = (double) (float) value;

Or use the method proposed by others, which uses Convert. This has the advantage that the original type doesn’t have to be known.


That's normal. If the object type is float you cannot cast it to double because they are not of the same type:

object o = 1.0f;
double d = (double)o; // will throw an exception

You need to convert it:

double d = Convert.ToDouble(o);


The float has been boxed as an object. So you're trying to convert a boxed float into a double. Use Vyas's convert instead - it is far more flexible and should always do the right thing:

var val=Convert.ToDouble(value);


use this

var val=Convert.ToDouble(value);


You cannot cast an arbitrary object to double.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜