The portable way to do this is with memcpy
(you may also be able to conditionally do it with reinterpret_cast
or a union, but those aren't certain to be portable because they violate the letter of the strict-alias rules):
// First, static assert that the sizes are the same
memcpy(&result, &bits, sizeof(bits));
But before you do make sure you know exactly what you're doing and what floating point representation is being used (although IEEE754 is a popular/common choice). You'll want to avoid all kinds of problem values like infinity, NaN, and denormal numbers.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…