是否每个 32 位浮点数都可以用 64 位浮点数精确表示
Is every 32bit floating point number is exactly representable with 64bit floating number
32位浮点数转换成64位浮点数再转换回来会不会丢失精度。
是否至少存在一个这样的 32 位浮点数? (包括次正规数)
IEEE-754 基本 32 位二进制 floating-point 可表示的值集是 IEEE-754 基本 64 位二进制 floating-point 可表示的值的子集。从这个 32 位 floating-point 到这个 64 位 floating-point 的任何正确实现的转换都不会改变数值。同样,如果 64 位 floating-point 数字包含 32 位格式可表示的值之一,则从该 64 位格式到 32 位格式的任何正确实施的转换都不会改变数值。
NaN 携带有效载荷信息,并且 IEEE 754 未完全指定有效载荷从一种格式到另一种格式的转换。
一些 floating-point 实现“刷新”次正规值,这意味着它们用零替换它们。此行为不符合 IEEE 754,但出于性能或成本原因由某些硬件实现。因此,将 32 位 floating-point 值转换为 64 位 floating-point 值但首先将次正规值刷新为零的指令会 return 不正确的结果。但是当然,在任何算术指令中,次正规值都会被刷新为零,因此在 round-trip 转换中将其刷新为零没有任何净影响。
32位浮点数转换成64位浮点数再转换回来会不会丢失精度。
是否至少存在一个这样的 32 位浮点数? (包括次正规数)
IEEE-754 基本 32 位二进制 floating-point 可表示的值集是 IEEE-754 基本 64 位二进制 floating-point 可表示的值的子集。从这个 32 位 floating-point 到这个 64 位 floating-point 的任何正确实现的转换都不会改变数值。同样,如果 64 位 floating-point 数字包含 32 位格式可表示的值之一,则从该 64 位格式到 32 位格式的任何正确实施的转换都不会改变数值。
NaN 携带有效载荷信息,并且 IEEE 754 未完全指定有效载荷从一种格式到另一种格式的转换。
一些 floating-point 实现“刷新”次正规值,这意味着它们用零替换它们。此行为不符合 IEEE 754,但出于性能或成本原因由某些硬件实现。因此,将 32 位 floating-point 值转换为 64 位 floating-point 值但首先将次正规值刷新为零的指令会 return 不正确的结果。但是当然,在任何算术指令中,次正规值都会被刷新为零,因此在 round-trip 转换中将其刷新为零没有任何净影响。