我遇到了一个无法轻易解决的小问题。我正在使用 stod() 将字符串转换为双精度数,但它给了我一个四舍五入的十进制数(例如,47.56164167 将给出 47.5616)。我需要比 4 更多的小数。我可以调用另一个 C++ 函数来将我的字符串转换为 double 而无需执行任何其他操作吗?
好的,这是涉及的显示方法,而不是 stod() 函数。
我遇到了一个无法轻易解决的小问题。我正在使用 stod() 将字符串转换为双精度数,但它给了我一个四舍五入的十进制数(例如,47.56164167 将给出 47.5616)。我需要比 4 更多的小数。我可以调用另一个 C++ 函数来将我的字符串转换为 double 而无需执行任何其他操作吗?
好的,这是涉及的显示方法,而不是 stod() 函数。
您需要确保在发送双精度或浮点数之前设置输出流的精度。这将确保生成整个值。
#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
不能代表所有数字,并且您可能会看到一些舍入发生,具体取决于您存储在其中的值。