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 = '_'
+inf = '>'
-inf = '<'
float(m, e) = '~' || INT(m) || INT(e)
0.0 = float(0, 0)
That representation is far from being compact.
Sending binary IEEE754 may be more preferable.
Example representations:
NaN | 5F
+inf | 3E
-inf | 3C
0.0 | 7E 2B80 2B80
45.25 m=181 e=-2 | 7E 2B81B5 2D8101
-45.25 m=-181 e=-2 | 7E 2D81B4 2D8101
0.125 m=1 e=-3 | 7E 2B8101 2D8102
0.15625 m=5 e=-5 | 7E 2B8105 2D8104
123.456 m=8687443681197687 e=-46 | 7E 2B871EDD2F1A9FBE77 2D812D