双值打印为整数

时间:2017-09-27 03:06:05

标签: c++ function double cout

我正在尝试使用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

如何在不使用设定精度的情况下修复此问题?

3 个答案:

答案 0 :(得分:1)

如果十进制之后的分数为0,则

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;
}