加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 将lexical cast string加倍

发布时间:2020-12-16 05:05:45 所属栏目:百科 来源:网络整理
导读:我正面临转换问题,我希望得到您的帮助.我正在使用 gcc4编译器,我很受限制地使用 gcc4. 我想将std :: string转换为double. std::string aQuantity = aRate.getQuantity();std::string aAmount = aRate.getAmount(); // aAmount = "22.05"double dQuantity = b
我正面临转换问题,我希望得到您的帮助.我正在使用 gcc4编译器,我很受限制地使用 gcc4.

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

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

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

解决方法

由于浮点值的性质,22.050000000000001是可以存储的最接近22.05的值.如果您只是尝试将22.05存储在一个double中然后打印它,则会发生同样的情况.

如果要打印22.05,则应在输出流上设置精度.或者,您可以调查有理数字库(例如,Boost.Rational).与double(或float)不同,这将能够精确地存储值22.05.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读