float to string conversion broken?

You can always use dtostrf() to convert floats to C-strings (similar to the way you were trying to use sprintf()).

https://www.hobbytronics.co.uk/arduino-float-vars