C++ 双值打印为整数
我正在尝试使用一个add函数来获取这个双精度值,并将它与另一个双精度值相加以得到答案。我使用get方法/函数获取答案值。答案值仅显示为int,而不是double。例如,12.0+10.0等于22.0,但当我显示结果时,它只显示22。这是我正在编写的代码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
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);
coutcout
如果小数点后的分数为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::coutiomanip
标题有。我不知道你是在问如何设置精度,还是在不使用setprecision
的情况下如何设置精度…@Jonesinator我试图在不使用setprecision的情况下设置精度为什么?这正是它的用途。我知道我可以使用setprecision向它添加一个小数。我想做什么在我的其他程序中,我可以在不使用setprecision的情况下打印出两个值,但由于某种原因,我无法理解为什么这个程序不允许我这样做。限制位数的不是std::cout
;而是流插入器(the
std::cout << std::setprecision (15) << getValue() << std::endl;