我在这里有点困惑 - 当双打存储为不透明(二进制)字段时,双打的比较仍然可以正常工作吗?我面临的问题是双精度包括符号的前导位(即正或负),当它们存储为二进制数据时,我不确定它是否会被正确比较:
我想确保比较能够正常工作,因为我在 LevelDB 中使用双精度作为键元组(例如)的一部分,并且我想保留正数和负数的数据局部性。LevelDB 仅使用不透明字段作为键,但它允许用户指定他/她自己的比较器。但是,我只想确保我不指定比较器,除非我绝对需要:
// Three-way comparison function:
// if a < b: negative result
// if a > b: positive result
// else: zero result
inline int Compare(const unsigned char* a, const unsigned char* b) const
{
if (*(double*)a < *(double*)b) return -1;
if (*(double*)a > *(double*)b) return +1;
return 0;
}