数组项逻辑错误的总和

时间:2016-05-26 22:31:07

标签: c++ arrays sum

它应该将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;

3 个答案:

答案 0 :(得分:0)

这很可能是双值的精确问题。

尝试将截止值设置为594.5并确保您获得正确的结果。

答案 1 :(得分:0)

  

Doubles are not floats, so don’t compare them

==中包含的<=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"]