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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |