Why?long has 64 bit, which is enough to represent the mantissa of 80bit reals. So you need only an additional short to hold the exponent.
Because only casts from float <-> integer where sizeof(src) == sizeof(dest) are currently supported, and there is no 80-bit integral type.