Почему вы хотите хэшировать значения с плавающей запятой?По той же причине, по которой сравнение значений с плавающей точкой на равенство имеет ряд ловушек, хеширование может иметь аналогичные (отрицательные) последствия.
Однако, учитывая, что вы действительно хотите это сделать, я подозреваю, что алгоритм повышенияЭто сложно, потому что, если принять во внимание денормализованные числа, разные битовые комбинации могут представлять одно и то же число (и, вероятно, должны иметь одинаковый хэш).В IEEE 754 также есть как положительные, так и отрицательные значения 0
, которые сравнивают равные, но имеют разные битовые комбинации.
Это, вероятно, не возникнет при хешировании, если не произойдет иначе в вашемАлгоритм, но вам все равно нужно позаботиться о сигнализации значений NaN.
Кроме того, что будет означать хэширование +/- бесконечности и / или NaN?В частности, NaN может иметь много представлений, все ли они должны приводить к одному и тому же хешу?У бесконечности, кажется, есть только два представления, поэтому кажется, что все будет хорошо.