C++ 双值打印为整数

C++ 双值打印为整数,c++,function,double,cout,C++,Function,Double,Cout,我正在尝试使用一个add函数来获取这个双精度值,并将它与另一个双精度值相加以得到答案。我使用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() { addVa

我正在尝试使用一个add函数来获取这个双精度值,并将它与另一个双精度值相加以得到答案。我使用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;
}
double x=0.0;
无效附加值(双值)
{ 
x=值+x;
}
双getValue()
{
返回x;
}
int main()
{
附加值(12.0);
附加值(10.0);

cout
cout
如果小数点后的分数为0,则会将值舍入。尝试使用12.5等实数分数值打印任何值都可以。因此,如果需要打印.0值,则需要使用
setprecision
printf

为了更好地理解,您可以继续回答这个问题

您可以使用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;
}
#包括
#包括
使用名称空间std;
双x=0.0;
无效附加值(双值)
{ 
x=值+x;
}
双getValue()
{
返回x;
}
int main()
{
附加值(12.0);
附加值(10.0);

不能使用
std::setprecision
from
#include


std::cout
iomanip
标题有。我不知道你是在问如何设置精度,还是在不使用
setprecision
的情况下如何设置精度…@Jonesinator我试图在不使用setprecision的情况下设置精度为什么?这正是它的用途。我知道我可以使用setprecision向它添加一个小数。我想做什么在我的其他程序中,我可以在不使用setprecision的情况下打印出两个值,但由于某种原因,我无法理解为什么这个程序不允许我这样做。限制位数的不是
std::cout
;而是流插入器(the

 std::cout << std::setprecision (15) << getValue() << std::endl;