已解决 郝天睿 修练者 #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; }
已采纳 被禁言 贾敬波 高级守护 if(x>=0&&x<=0.4)这个判断公式有一点问题,因为是小数的加减,精度是远没有整数准确的,可能这个x求出来以后会显示是0.400001,那这里就会被判别为不满足这个条件。应该改为x<0.5。 还有一个建议就是这个小数的题目最好是转化为整数再去做(乘以10),做完以后再转化为小数(除以10)
栾峻岩 初级天翼 else { cout<<(int)(m+n+h)+0.5; } 应该不是+0.5,应该是在他的末位输出“.5”; else 这里应该改为else if (判断条件) 因为&&的else 是 只有瞒住一个条件,不符。求采纳~+