首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >istringstream未正确解析

istringstream未正确解析
EN

Stack Overflow用户
提问于 2013-07-16 05:07:49
回答 1查看 62关注 0票数 0

我使用以下代码将输入字符串转换为浮点数:

代码语言:javascript
复制
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“,这显然是错误的。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-16 05:10:59

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

之所以有任何区别,是因为1/10不能精确地表示为二进制分数;关于这个问题,这个网站上有几十个问题有很好的答案。最接近1/10的单精度值恰好是0.100000001490116119384765625。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17663955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档