我想我的问题也可以这样问:一个十进制值可以在双精度变量中以多种方式表示。
我有一个哈希表实现,双精度浮点数将是键,我正在使用一种哈希算法来构建哈希,同时迭代双精度的每个字节(至少在我的系统上是 64 位的,所以8 个字节来散列)。我的问题是,如果单个值(例如“1.2345”)可以以双倍多于 1 的方式以二进制形式表示,那么它可能会导致单个值有多个可能的哈希值。
我不确定在哪里研究这种可能性。如果我不得不猜测,我会猜测这是不可能的,或者如果有可能对其进行规范化以确保值在给定系统上始终具有相同的表示形式。我主要是在寻找对此的确认。
如果一个值可以有多种表示形式,那么我需要在散列它之前对该值进行规范化,我希望能就如何做到这一点提出建议。
编辑:
我发现了更多关于浮点数的信息。它们被存储为一个 mantessa 和一个指数。所以我的问题是单个浮点数是否可以由多个 mantessa 和指数的组合表示。