Floats consists of [encoding/INT]-encoded mantissa "m" and
base-2 exponent "e": m * pow(2,e).
Normalised values *must* be used.
Separate tag's values are used for representing NaN and infinite
numbers. Zero is represented as zero mantissa and exponent.
NaN = 0x10
+inf = 0x11
-inf = 0x12
float(m, e) = 0x13 || INT(m) || INT(e)
0.0 = float(0, 0)
That representation is far from being compact. Sending binary IEEE754
binaries may be more preferable.
Example representations:
NaN | 10
+inf | 11
-inf | 12
0.0 | 13 0C80 0C80
45.25 m=181 e=-2 | 13 0C81B5 0D8101
-45.25 m=-181 e=-2 | 13 0D81B4 0D8101
0.125 m=1 e=-3 | 13 0C8101 0D8102
0.15625 m=5 e=-5 | 13 0C8105 0D8104
123.456 m=8687443681197687 e=-46 | 13 0C871EDD2F1A9FBE77 0D812D