Double Values作为整数打印

问题描述:

我试图使用一个add函数来获取double值并将其与另一个double值相加以获得答案。我使用get方法/函数来获取答案值。答案值只显示在int中,而不是double。例如像12.0 + 10.0等于22.0,但是当我显示它只是说22以下的结果是,我的工作代码...Double Values作为整数打印

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

的'iomanip'报头具有[setprecision](http://en.cppreference.com/w/cpp/io/manip/setprecision)。我不知道你是否在问如何设置精度,或者如何在不使用'setprecision'的情况下做到这一点... – Jonesinator

+0

@Jonesinator我正在尝试不使用setprecision – Nicole

+0

为什么?这正是它的目的。 – Jonesinator

cout如果小数点后的分数为0,则切断为舍入值。尝试打印任何具有12.5的真实分数值的值,它将起作用。因此,如果您需要打印.0值,则需要使用setprecision或使用printf

为了更好地理解,你可以通过这个问题 How do I print a double value with full precision using cout?

+1

这不是'std :: cout',它限制了数字;它是流插入器('

您可以使用std :: setprecision设置精度跟随,但它只会保持显著(有意义)位设置精度。在这种特殊情况下,22.0中的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::setprecision#include <iomanip>

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