首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将词法转换字符串提升为双倍

将词法转换字符串提升为双倍
EN

Stack Overflow用户
提问于 2013-08-06 08:25:09
回答 1查看 9K关注 0票数 4

我正面临一个转换问题,我需要你的帮助。我使用的是gcc4编译器,并且非常受限于使用gcc4。

我想将std::string转换为double。

代码语言:javascript
复制
std::string aQuantity = aRate.getQuantity();
std::string aAmount = aRate.getAmount(); 

// aAmount = "22.05"

double dQuantity = boost::lexical_cast<double>(aQuantity);
double dAmount = boost::lexical_cast<double> (aAmount);

// dAmount =  22.050000000000001

顺便说一句,我也尝试过atof,我仍然有同样的问题。有没有办法使用istringstreamsetprecission(2)来获得aAmount显示的正确值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-06 08:31:33

由于浮点值的性质,22.050000000000001是与可以存储的22.05最接近的值。如果你只想把22.05储存在一个双人间,然后打印出来的话,也会发生同样的情况。

如果要打印22.05,则应在输出流上设置精度。或者,您可以研究一个有理数库(例如,Boost.Rational)。这将能够精确地存储22.05值,不像双(或浮动)。

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

https://stackoverflow.com/questions/18075131

复制
相关文章

相似问题

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