誤差值處理:
最後的keep和dispose是取決於四捨五入前的結果。輸出前半段的浮點數是四捨五入後的結果。
如果%>=0則+0.0000001,<0則-0.0000001,可以除去誤差,使得 9.999999999 進位變成 10
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
int num;
scanf("%d", &num);
for(int i=0, a, b;i<num;i++) {
scanf("%d %d", &a, &b);
double f=((double)b/(double)a-1)*100*100;
if(f>=0) {
f+=0.0000001;
} else {
f-=0.0000001;
}
double res=f/100;
f=round(f);
f/=100;
if(f==-0.00) {
f=0;
}
printf("%.2f%% ", f);
if(res>=10.00||res<=-7.00) {
printf("dispose\n");
} else {
printf("keep\n");
}
}
return 0;
}
如果本文對您有幫助的話幫忙點擊廣告和分享吧!
© 若無特別註明,本站文章皆由 WeakMouse's Coding Blog 原創 ,轉載引用本文前請先留言告知。本文轉載請註明文章源自 WeakMouse's Coding Blog ,作者 ,並附上原文連結: 【題解】Zerojudge a647 - 投資專家
0 留言