我正在为一个班级的项目工作,我在几何平均值的输出方面遇到了麻烦,总是出现1,我确信这是不对的。
这是我的代码:
#include<iostream>
#include<math.h>
using namespace std;
int main(int argc, char**argv)
{
float i, j, k;
float a, h, g;
cout<<"Enter 3 floating point numbers"<<endl;
cin>>i>>j>>k;
while(i>0 && j>0 && k>0 )
{
a = (i+j+k)/3;
h = 3/((1/i) + (1/j) + (1/k));
g = pow((i*j*k),(1/3));
cout<<"Arithmetic: "<<a<<endl;
cout<<"Harmonic: "<<h<<endl;
cout<<"Geometric: "<<g<<endl;
cout<<"Enter 3 floating point numbers"<<endl;
cin>>i>>j>>k;
}
return(0);
}
答案 0 :(得分:4)
1/3
为零,因为它是整数除法。如果两个操作数都是整数类型,它总是整数除法。然后你将某些东西的力量归零并得到一个。
您需要使用浮点文字:1.0/3.0
类型为double
,1.0f/3.0f
类型为float
。
答案 1 :(得分:2)
1/3
是一个等于0
的整数。您应该编写1.0/3.0
(或1./3
)来获取浮点值。
答案 2 :(得分:1)
(1/3)
这是一个整数除法,总是产生0,因为其余部分被定义为被截断。您需要将一个或两个转换为浮点值。