C++ 10.8==10.8计算为false?

C++ 10.8==10.8计算为false?,c++,floating-point,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; } 双和(向量v){ 双和=0; 对于(size_t i=0;i

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

double sum(vector<double> v) {
  double sum = 0;
  for (size_t i = 0; i < v.size(); i++) {
    sum += v[i];
  }
  return sum;
}
双和(向量v){
双和=0;
对于(size_t i=0;i
但当我用十进制数测试时,它似乎不起作用

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;
}
void test\u sum\u decimal(){
库特