The ranges you specify are misleading. Floating point numbers don't work like integers. And I'm pretty sure they use single precision:
hint str(3.402823 * 10^38) // -> 3.40282e+038
hint str(3.402824 * 10^38) // -> 1.#INF (exceeds max. float)
I think the correct answer is:
The numbers we deal with in OFP/ArmA are single precision floating point numbers that have at least 6 significant digits and a magnitude between about 10^-38 and 10^38.
Keep in mind that floating point numbers have a limited precision, i.e. some numbers are rounded, which leads to funny results:
hint str( sqrt(2)^2 ); // -> 2
hint str( sqrt(2)^2 == 2 ); // -> FALSE
hint str( 2^24 == 2^24 + 1 ); // -> TRUE