问题标题: 2162题哪错了?

1
2
已解决
郝天睿
郝天睿
修练者
修练者

#include<iostream>
using namespace std;
int main()
{
    double m,n,h,x;
    cin>>m>>n>>h;
    x=(m+n+h)-(int)(m+n+h);
    if(x>=0&&x<=0.4)
    {
        cout<<((int)(m+n+h))<<".0";
    }
    else
    {
        cout<<(int)(m+n+h)+0.5;
    }
    return 0;
}


2
已采纳
被禁言 贾敬波
贾敬波
高级守护
高级守护

 if(x>=0&&x<=0.4)这个判断公式有一点问题,因为是小数的加减,精度是远没有整数准确的,可能这个x求出来以后会显示是0.400001,那这里就会被判别为不满足这个条件。应该改为x<0.5。

还有一个建议就是这个小数的题目最好是转化为整数再去做(乘以10),做完以后再转化为小数(除以10)

0
-1
栾峻岩
栾峻岩
初级天翼
初级天翼
else
    {
        cout<<(int)(m+n+h)+0.5;
    }

应该不是+0.5,应该是在他的末位输出“.5”;

else

这里应该改为else if (判断条件)

因为&&的else 是 只有瞒住一个条件,不符。求采纳~+

 

我要回答