浮点序列化,词典比较==浮点比较

时间:2011-03-09 08:27:46

标签: serialization comparison floating-point lexicographic

我正在寻找一种序列化浮点的方法,以便在序列化形式中,词典比较与浮点比较相同。我认为可以将其存储在以下格式中:

| signed bit (1 for positive) | exponent | significand |

指数和有效数字将序列化为big-endian,补码将用于负数。

这会有用吗?我不介意它是否打破NaN,但有INF比较工作会很好。

1 个答案:

答案 0 :(得分:3)

IEEE编号的格式是专门设计的,因此可以使用“普通”整数比较。但是,这仅适用于比较两个相同符号的数字。

你建议在数字为负数时补充这些数字是正确的,所以这样可行。

这适用于+ -Inf:s和次正规数。然而,NaN:s不会起作用,或者更确切地说,它们将被视为比inf更“大”。

唯一有问题的情况是“-Zero”(即sign = 1,exponent = 0,尾数= 0)。符合IEEE,Zero == -Zero。您必须决定是否要将-Zero作为零发出,将它们视为不同,或者将特殊代码添加到比较例程中。