将float转换为具有精度和指定的十进制数字的字符串?

香农·马修斯(Shannon Matthews):

在指定精度和十进制数字时,如何在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();

固定

使用固定的浮点表示法

floatfieldstr格式标志设置fixed

floatfield设置为时fixed,浮点值使用定点表示法写入:该值用精确precision指定的十进制部分中的位数完全相同,而没有指数部分。

setprecision


为了进行技术转换,例如将数据存储在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何防止JSONObject来自json.jar将十进制数字字符串转换为double

如何判断以字符串表示的十进制数字是否适合双精度?

将带有千位(和十进制)分隔符的字符串转换为双精度

将十进制数字字符串转换为BCD的算法

C#将十进制转换为具有指定格式的字符串

将十进制数字序列转换为Big endian float

将具有时间值“ 0:00”的字符串转换为十进制/双精度值?

C#通过分隔数字将十进制转换为字符串

将数字(整数或十进制)转换为数组,将数组转换为数字(整数或十进制),而无需使用字符串

在字符串中添加2个十进制数字,保持精度

将具有多个前导零的字符串转换为十进制

如何将ASCII字符串转换为十进制数字?

将货币转换为十进制数字JavaScript

将字符串转换为十六进制,十进制和八进制

将十进制数字转换为Excel字母

使用python将十六进制十进制数字转换为十进制

将字符串转换为十进制(“ 3942.000000000000”)

确保代表十进制数字的字符串在“。”之前具有0。

无法将十进制数字转换为SqlDecimal

将小数字符串转换为十进制

将二进制数字转换为十进制数字的Java程序。输入是零和一的字符串

将十进制数字从字符串转换为双精度

将字符串转换为双精度(非十进制)

使用递归将二进制数字的字符串转换为十进制数字...

从字符串获取多十进制数字

将十进制数字转换为ASCII

使用 JavaScript 手动将十进制字符串转换为数字

将具有 1 个十进制数字的双数转换为 2 个数字

将包含科学数字的文件名转换为具有十进制数字的文件