10.8 == 10.8计算为假?

时间:2018-09-11 02:59:28

标签: c++ floating-point

我有一个简单的程序来计算向量的总和。这是实现。

double sum(vector<double> v) {
  double sum = 0;
  for (size_t i = 0; i < v.size(); i++) {
    sum += v[i];
  }
  return sum;
}

但是当我用十进制数测试时,它似乎不起作用。

void test_sum_decimal() {
  cout << "test_sum_decimal" << endl;

  vector<double> test = {1.2, 3, 6.5, 0.1};
  cout << sum(test) << endl; // Prints 10.8
  if (sum(test) == 10.8) {
    cout << "EQUAL" << endl; // Doesn't print "EQUAL"
  }
  assert(sum(test) == 10.8); // Terminates program because expression is false

  cout << "PASS!" << endl;
}

我感觉是由于数据类型double的精度不是100%,但是我不确定。

感谢您的帮助。谢谢:)

0 个答案:

没有答案