C++Cout将字符串转换为保留所有小数的十进制数

C++ Cout converted string to decimal number with keeping all the decimals

本文关键字:小数 十进制数 保留 字符串 转换 C++Cout      更新时间:2023-10-16

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

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

在向输出流发送double或float之前,需要确保设置了输出流的精度。这将确保生成整个值。

#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

请记住,double不能表示所有数字,您可能会看到根据存储在其中的值进行一些舍入。