0

我遇到了一个无法轻易解决的小问题。我正在使用 stod() 将字符串转换为双精度数,但它给了我一个四舍五入的十进制数(例如,47.56164167 将给出 47.5616)。我需要比 4 更多的小数。我可以调用另一个 C++ 函数来将我的字符串转换为 double 而无需执行任何其他操作吗?

好的,这是涉及的显示方法,而不是 stod() 函数。

4

1 回答 1

2

您需要确保在发送双精度或浮点数之前设置输出流的精度。这将确保生成整个值。

#include <iostream>
#include <sstream>
#include <iomanip>
int main()
{
    std::stringstream svalue("47.56164167");
    double dvalue;

    svalue >> dvalue;
    std::cout << dvalue << std::endl;
    std::cout << std::setprecision(10) << dvalue << std::endl;
}

这将输出以下内容

47.5616
47.56164167

请记住,adouble不能代表所有数字,并且您可能会看到一些舍入发生,具体取决于您存储在其中的值。

于 2013-08-03T18:15:53.347 回答