我正在尝试使用add函数来获取double值,并使用另一个double值添加它以获得答案。我使用get方法/函数来获取答案值。答案值仅显示在int而不是double。例如,12.0 + 10.0等于22.0但是当我显示结果时它只显示22.这是我正在处理的代码...
double x = 0.0;
void addValue(double value)
{
x = value + x;
}
double getValue()
{
return x;
}
int main()
{
addValue(12.0);
addValue(10.0);
cout << getValue() << endl;
return 0;
}
此代码的结果是22 我想要的是22.0
如何在不使用设定精度的情况下修复此问题?
答案 0 :(得分:1)
cout
切断圆值。尝试打印任何具有12.5的实际分数值的值,它将起作用。因此,如果您需要打印.0值,则需要使用setprecision
或使用printf
。
为了更好地理解,您可以按照这个问题进行操作 How do I print a double value with full precision using cout?
答案 1 :(得分:1)
使用std::setprecision
#include <iomanip>
std::cout << std::setprecision (15) << getValue() << std::endl;
答案 2 :(得分:0)
您可以使用std :: setprecision来设置精度,但它只会保留重要(有意义的)数字来设置精度。在这种特殊情况下,0在22.0中没有显着性。因此,如果你真的想要打印22.0,那么你必须设置固定的精度(设置值为你想要的数字)。您的代码如下。
#include <iostream>
#include <iomanip>
using namespace std;
double x = 0.0;
void addValue(double value)
{
x = value + x;
}
double getValue()
{
return x;
}
int main()
{
addValue(12.0);
addValue(10.0);
cout << fixed <<std::setprecision(1) << getValue() << endl;
return 0;
}