Будут ли работать правильно, когда они хранятся как непрозрачные (двоичные) поля? Проблема, с которой я столкнулся, заключается в том, что двойное число включает в себя ведущий бит для знака (т.е. положительный или отрицательный), и когда они хранятся как двоичные данные, я не уверен, что они будут сравниваться правильно:
Я хочу чтобы гарантировать, что сравнение будет работать правильно, потому что я использую double как часть ключевого кортежа (например) в 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;
}