简短的问题:比较运算符的行为是否以最大精度定义?意思是,如果我有两个精确到相同的数字(x 和 y),当我执行 x < y 时,我是否应该总是期待相同的答案?
我意识到这似乎是一个愚蠢的问题,但让我详细说明一下。我正在使用,double
并且我有一系列数字,例如:
0: 62536.5477752959
1: 62536.4840613718
2: 62536.4576412381
3: 62522.8487197062
4: 62536.5473896233
5: 62536.5467941254
6: 62527.3508907998
7: 62536.5477752959
8: 62517.5900098039
9: 62536.5477752959
请注意,条目 0、7 和 9 具有相同的值。
当我这样做时(像这样):
int low = 0, high = 0;
for(int i = 0; i < N; ++i) {
if(x[i] < x[low])
low = i;
if(x[i] > x[high])
high = i;
}
cout << "low: " << low << " high: " << high << endl;
我有时会得到:low: 8 high: 0
,有时:low: 8 high: 7
我总是期望最低的索引值。
有任何想法吗?
[编辑缺少的大括号。]