A prvalue of floating-point type can be converted to a prvalue of
another floating-point type
. If the source value can be exactly
represented in the destination type, the result of the conversion is
that exact representation
. If the source value is between two adjacent
destination values, the result of the conversion is an
implementation-defined choice of either of those values
. Otherwise, the behavior is undefined
.