首页 > 解决方案 > 如何使用 std::to_string 函数将 float 格式化为“x.0”

问题描述

我正在使用 std::to_string 函数将浮点数转换为字符串。

 float number = 30.0f;  // this number will vary

当我将浮点数转换为字符串时

 std::to_string(number);

std::cout 将结果显示为 30.000000

我希望结果为 30.0 并删除多余的零。

标签: c++c++11

解决方案


std::to_string不支持这一点,实际上对于任意浮点值通常不是很好。

由于您的问题被标记为,因此我知道有两种方法。首先,你有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.


推荐阅读