我有一个简单的程序来计算向量的总和。这是实现。
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%,但是我不确定。
感谢您的帮助。谢谢:)