std::to_string
не поддерживает это, и фактически вообще не подходит для произвольных значений с плавающей запятой.
Поскольку ваш вопрос помечен c ++ 11 , я знаю о двух способах. Во-первых, у вас есть std::stringstream
, который является типобезопасным и будет работать с произвольными типами:
#include <sstream>
// ...
float number = 30.0f;
std::ostringstream oss;
oss << std::setprecision(1) << number;
std::string result = oss.str();
В качестве альтернативы, у вас есть std::snprintf
, который требует преобразования через char
буфер заданного размера:
float number = 30.0f;
char buffer[20]; // maximum expected length of the float
std::snprintf(buffer, 20, "%.1f", number);
std::string str(buffer);
Из C ++ 17 вы можете использовать std::to_chars
вместо аналогично std::snprintf
, а из C ++ 20 вы можете используйте std::format
.