gpt4 book ai didi

c++ - istringstream 没有正确解析

转载 作者:行者123 更新时间:2023-11-28 03:13:30 31 4
gpt4 key购买 nike

我正在使用以下代码将输入字符串转换为 float :

template <typename T>
T parseString(const std::string &s)
{
T val;
std::istringstream is(s.c_str());
is >> val;

return val;
}

float x = parseString<float>("0.1");
std::cout << std::setprecision(12) << x;

当我打印 x 时,我得到“0.10000000149”,这显然是错误的。有什么想法吗?

最佳答案

single-precision float 数据类型精确到大约 8-9 位十进制数字。您使用 12 位数字打印它,因此您可以预期最后三位数字将被关闭。

完全不同的原因是 1/10 不能精确地表示为二进制分数;关于此问题,此站点上有许多问题和很好的答案。最接近 1/10 的单精度值正好是 0.100000001490116119384765625。

关于c++ - istringstream 没有正确解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17663955/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com