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
我怎样才能解决这个问题,而不必使用设置精度?
cout
如果小数点后的分数为0,则切断为舍入值。尝试打印任何具有12.5的真实分数值的值,它将起作用。因此,如果您需要打印.0值,则需要使用setprecision
或使用printf
。
为了更好地理解,你可以通过这个问题 How do I print a double value with full precision using cout?
这不是'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;
的'iomanip'报头具有[setprecision](http://en.cppreference.com/w/cpp/io/manip/setprecision)。我不知道你是否在问如何设置精度,或者如何在不使用'setprecision'的情况下做到这一点... – Jonesinator
@Jonesinator我正在尝试不使用setprecision – Nicole
为什么?这正是它的目的。 – Jonesinator