首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >to_string函数附加零

to_string函数附加零
EN

Stack Overflow用户
提问于 2014-09-27 23:22:06
回答 1查看 143关注 0票数 0

我正在尝试得到一个双精度数的整数部分和小数部分。这就是我是如何实现的:

代码语言:javascript
复制
void func(double d)
{
    int intpart, decpart;
    intpart = d;
    string szDec = to_string(d);
    szDec = szDec.substr(szDec.find(".") + 1);
    decpart = stoi(szDec);
    m_iNom = intpart * decpart + 1;
    m_iDenom = decpart;
}

我传递给func 0.5,当试图将小数部分作为整数时,问题就出现了。

to_String使szDec = "0.500000000000000“而不是5

当使用substr()函数时,szDec = "0.500000“

使我的decpart = 500000而不是5。

如何停止to_String函数和substr函数将零添加到字符串并将其转换为浮点数?

EN

回答 1

Stack Overflow用户

发布于 2014-09-28 14:26:13

为了回答您的特定问题,std::to_string被故意定义为尽可能简单,并且没有任何可以用来更改输出格式的旋钮。对于浮点数,它被定义为执行与C的%f等价的操作,后者恰好为0.5的输入生成"0.50000"

boost::lexical_cast<std::string>(d)会给你"0.5",就像std::ostringstream buf; buf << d; szDec = buf.str();一样,或者等价的C,但是,正如评论中指出的,如果你的数字是不能用二进制表示的东西(例如,如果它是0.1而不是0.5),那么重构最佳小数是一个不平凡的算法。

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

https://stackoverflow.com/questions/26076155

复制
相关文章

相似问题

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