gpt4 book ai didi

c++ - 将 lexical_cast 字符串提升为两倍

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:05 26 4
gpt4 key购买 nike

我遇到了转换问题,希望得到您的帮助。我正在使用 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

顺便说一句,我也试过atof,但我仍然遇到同样的问题。有什么方法可以将 istringstreamsetprecission(2) 一起使用来获得 aAmount 显示的正确值?

最佳答案

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

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

关于c++ - 将 lexical_cast 字符串提升为两倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18075131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com