警示后人
查看原帖
警示后人
821481
_xm_楼主2023/1/14 22:31

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");
2023/1/14 22:31
加载中...