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.
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
.
精彩评论