在C ++中的计算中无法得到正确的答案

时间:2015-03-02 18:47:34

标签: c++

这是我的实验室计划。我必须应用两个公式并打印两者的答案。第一个是这一行:

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;
}

2 个答案:

答案 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.5f1.0f/2.0f获取具有正确值的float常量。或者除以2而不是乘以一半。