Explicit casting operators can be used to perform conversions of numeric types, even though they don't extend or implement one another.
double value = -1.1; int number = (int) value;
Note that in cases where the destination type has less precision than the original type, precision will be lost. For example,
-1.1 as a double value in the above example becomes
-1 as an integer value.
Also, numeric conversions rely on compile-time types, so they won't work if the numeric types have been "boxed" into objects.
object value = -1.1; int number = (int) value; // throws InvalidCastException