double存在精度误差!!!
以下代码会WA:
double c = 0.7 * a + 0.3 * b;
if (a + b > 140 && c >= 80) printf("Excellent");
else printf("Not excllent");
c >= 80在c = 80.0时会出问题。具体原因是因为浮点数无法准确的表达有理数,感兴趣自行查阅。
建议改成:
double c = 0.7 * a + 0.3 * b;
if (a + b > 140 && c >= 80 - 0.00001) printf("Excellent");
else printf("Not excllent");
或改成:
int c = 7 * a + 3 * b;
if(a + b > 140 && c >= 800) printf("Excellent");
else printf("Not excllent");