有沒有人可以向我解釋爲什麼這個程序的執行進入不可行的時候?
我知道雙精度和浮點精度問題的存在,但我不明白在這個例子中的問題。C雙加錯誤
注:我用GCC 4.4.5
#include <stdio.h>
#define NUM_JOINTS 1
typedef struct {
double t1;
double t2;
double t3;
} jointProfile;
jointProfile jp[NUM_JOINTS];
int main() {
jp[0].t1 = 0.51639777949432230652604403076111339032649993896484375;
jp[0].t2 = 0.00000000000000000000000000000000000000000000000000000;
jp[0].t3 = 0.77459666924148340427791481488384306430816650390625000;
double maxTime = (jp[0].t1 + jp[0].t2 + jp[0].t3);
if ((jp[0].t1 + jp[0].t2 + jp[0].t3) < maxTime) {
printf("Infeasible\n");
}
return 0;
}
你有沒有嘗試在if中添加if作爲double? – mrK
是的,但結果是一樣的 – user803437