这是我的实验室计划。我必须应用两个公式并打印两者的答案。第一个是这一行:
cout<<"Hypoteneus is: " <<sqrt((x*x)+(y*y)) <<endl;
这个有效。问题在于:
cout<<"Area is: " <<a*x <<((1/2)*x*y);
问题在于它将答案打印为0.我将a*x
用于测试,但是表达式(1/2)*x*y
将0呈现为答案。我输入x
为1,y
为2.请帮助。
int main ()
{
float x, y, a=122;
cout<<"Enter x and y.\n";
cin>>x >>y;
cout<<"Hypoteneus is: " <<sqrt((x*x)+(y*y)) <<endl;
fflush(stdin);
cout<<"Area is: " <<a*x <<((1/2)*x*y);
getch();
return 0;
}
答案 0 :(得分:9)
((1/2)*x*y)
应为((1.0/2.0)*x*y)
或(0.5*x*y)
。
否则,编译器将理解int/int
,结果将为int
,因此您的预期0.5
将变为0
。
答案 1 :(得分:3)
1/2
指定整数运算,将结果截断为最接近的整数,即零。
使用0.5f
或1.0f/2.0f
获取具有正确值的float
常量。或者除以2而不是乘以一半。