它应该将x的数组元素从135.1加到24.1,输出为594.4 但是输出是570.3,这是从135.1到24.6而不是24.1的总和 它的作用是if条件是sum + x [i]只小于594.4而忽略了相等的条件。 我很困惑。
代码:
double x[12] = {135.1,73.1,63.2,59.1,59.1,53.1,36.1,35.1,31.8,24.6,24.1,50.2};
double sum = 0;
for (int i = 0; i < 12; i++)
if (sum + x[i] <= 594.4)
sum += x[i];
cout << sum << endl;
答案 0 :(得分:0)
这很可能是双值的精确问题。
尝试将截止值设置为594.5并确保您获得正确的结果。
答案 1 :(得分:0)
将==
中包含的<=
与bool areSame(double a, double b)
{
return fabs(a - b) < EPSILON;
}
相比较,将其改为两倍。
RunPython
答案 2 :(得分:0)
您需要更精确地打印(使用std::setprecision()),如下所示:
gsamaras@gsamaras-A15:~$ g++ -Wall main.cpp
gsamaras@gsamaras-A15:~$ ./a.out
570.3000000000
输出:
FROM tomcat:8.0
COPY server/build/libs/server.war /usr/local/tomcat/webapps/server.war
CMD ["catalina.sh", "run"]