When a float is coerced to a string (e.g. as operand to “+” when the other operand is a string, or as lone parameter to string functions such as server.log), then the implicit “printf-style” format used is “%f”, which as in C has a precision of 6. Any float that’s equal to 1.00000 to 6 significant figures, coerces to the string “1”. If you want to use the full power of printf (e.g. to add extra precision), you can take control of the conversion by using format(), rather than relying on coercion.

Note that on the device, floats are IEEE754 single precision, so may have fewer significant digits than you hope.