每个32位浮点数是否可以用64位浮点数精确表示

时间:2018-04-10 14:57:03

标签: floating-point floating-accuracy

是否可能通过将32位浮点数转换为64位浮点数并再次将其转换回来来丢失精度。

是否存在至少一个这样的32个浮点数? (包括次正规数)

1 个答案:

答案 0 :(得分:3)

由IEEE-754基本32位二进制浮点表示的值集是IEEE-754基本64位二进制浮点可表示的值的子集。从此32位浮点到此64位浮点的任何正确实现的转换都不会更改数值。类似地,如果64位浮点数包含32位格式中可表示的值之一,则从此64位格式到32位格式的任何正确实现的转换都不会更改数值。

NaN携带有效载荷信息,IEEE 754未完全指定有效载荷从一种格式到另一种格式的转换。

某些浮点实现“刷新”次正常值,这意味着它们用零替换它们。此行为不符合IEEE 754,但出于性能或成本原因由某些硬件实现。因此,将32位浮点值转换为64位浮点值但首先将子正常值刷新为零的指令将返回不正确的结果。但是,无论如何,在任何算术指令中,次正规值都会被刷新为零,因此在往返转换中将其刷新为零没有净效应。