По умолчанию к программе подключается библиотека с урезанным sprintf, который не поддерживает дробные числа (видимо, в целях оптимизации).

То есть код sprintf(&buffer[0], "%f", 2.3f); выдаст "?" вместо правильного числа.

НУЖНО БОЛЬШЕ ФЛОАТА!