在指定精度和十进制数字时,如何在C ++中将浮点数转换为字符串?
例如: 3.14159265359 -> "3.14"
一种典型的方法是使用stringstream
:
#include <iomanip>
#include <sstream>
double pi = 3.14159265359;
std::stringstream stream;
stream << std::fixed << std::setprecision(2) << pi;
std::string s = stream.str();
见固定
使用固定的浮点表示法
floatfield
将str流的格式标志设置为fixed
。当
floatfield
设置为时fixed
,浮点值使用定点表示法写入:该值用精确度(precision
)指定的十进制部分中的位数完全相同,而没有指数部分。
为了进行技术转换,例如将数据存储在XML或JSON文件中,C ++ 17定义了to_chars系列函数。
假设有一个兼容的编译器(在撰写本文时我们缺少),可以考虑这样的事情:
#include <array>
#include <charconv>
double pi = 3.14159265359;
std::array<char, 128> buffer;
auto [ptr, ec] = std::to_chars(buffer.data(), buffer.data() + buffer.size(), pi,
std::chars_format::fixed, 2);
if (ec == std::errc{}) {
std::string s(buffer.data(), ptr);
// ....
}
else {
// error handling
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句