我注意到一些使用 double 的算术计算存在小错误。这真的很奇怪,总是有一个小错误和/或一个额外的有效数字。
首先,我使用 atof 转换从文本文件中读取的具有两个有效数字的数字(然后将它们记录在向量上):
// Puts into vector
double ask_file, bid_file; // Values of ask and bid from file
double cur_conversion = 0.16;
ask_file = cur_conversion*atof(values[0].c_str());
bid_file = cur_conversion*atof(values[1].c_str());
然后我正在做算术(来自其他类,两个不同的对象):
diff = OKC->bid_val() - BV->ask_val(); // diff
diff2 = OKC->ask_val() - BV->bid_val(); // diff2
这是输出:
BV Askfile: 245.267 Bidfile: 245.078
OKC Askfile: 248.82 Bidfile: 248.73
diff: 3.4628 diff2: 3.7416
如您所见,两种计算都存在错误。差异 = 3.463 而不是 3.4628。并且 diff2 = 3.742 而不是 3.7416。
你知道怎么回事吗??