IEEE 754
IEEE制定的二进制浮点数算术标准,定义了浮点数的表示方式、精度(fp32约7位十进制有效数字,fp64约15位)及舍入规则,是现代计算机浮点运算的基础规范
核心事实
时间轴 (近 90 天)
IEEE 754标准允许实现层面的多种合法选择,例如融合乘加(FMA)的使用、舍入模式、非规格化数的处理,以及不同指令集对同一运算可能给出不同结果。
IEEE 754浮点数不满足实数域中的结合律和分配律,舍入误差会累积传播。
8087 在 IEEE 754 制定过程中贡献了渐进下溢机制,即输出非规范化数而非直接刷零。
NaN 在 IEEE 754 浮点标准中表示无效运算结果,常见触发条件包括 0/0、∞−∞、∞×0 以及对负数开平方。
IEEE 754 双精度浮点数(TypeScript 的 number 类型)无法精确表示许多十进制小数,因此不适合金融计算。
IEEE 754 双精度浮点数(float64)只能精确表示分母为 2 的幂的分数,0.1、0.2 这类十进制小数在二进制下是无限循环小数,存储时必然被截断。
IEEE 754 浮点数无法精确表示大多数十进制小数,反复运算会产生舍入误差,例如在 JavaScript 中 0.1 + 0.2 === 0.30000000000000004。
将无符号整数 n 转换为 float 后,规格化结果的指数字段等于 floor(log2(n)) + 127
浮点指数提取方法中零值输入会产生 -∞(指数全零),需要额外处理
对于超过 2²⁴ 的 32 位整数,单精度浮点的尾数精度不足以精确表示,导致指数字段偏低
还有 13 条时间轴事件
全部知识事实 (20)
IEEE 754双精度格式使用64位存储:1位符号位、11位指数位和52位尾数位(加隐含1位共53位有效精度)
65%待验证Python的浮点数遵循IEEE 754双精度浮点数标准,使用64位二进制来表示一个小数
60%待验证IEEE 754标准允许实现层面的多种合法选择,例如融合乘加(FMA)的使用、舍入模式、非规格化数的处理,以及不同指令集对同一运算可能给出不同结果。
50%待验证IEEE 754浮点数不满足实数域中的结合律和分配律,舍入误差会累积传播。
50%待验证8087 在 IEEE 754 制定过程中贡献了渐进下溢机制,即输出非规范化数而非直接刷零。
50%待验证NaN 在 IEEE 754 浮点标准中表示无效运算结果,常见触发条件包括 0/0、∞−∞、∞×0 以及对负数开平方。
50%待验证IEEE 754 双精度浮点数(TypeScript 的 number 类型)无法精确表示许多十进制小数,因此不适合金融计算。
50%待验证IEEE 754 双精度浮点数(float64)只能精确表示分母为 2 的幂的分数,0.1、0.2 这类十进制小数在二进制下是无限循环小数,存储时必然被截断。
50%待验证IEEE 754 浮点数无法精确表示大多数十进制小数,反复运算会产生舍入误差,例如在 JavaScript 中 0.1 + 0.2 === 0.30000000000000004。
50%待验证对于超过 2²⁴ 的 32 位整数,单精度浮点的尾数精度不足以精确表示,导致指数字段偏低
50%待验证浮点指数提取方法中零值输入会产生 -∞(指数全零),需要额外处理
50%待验证单精度浮点数用 8 位存储指数,采用偏置编码 bias = 127
50%待验证将无符号整数 n 转换为 float 后,规格化结果的指数字段等于 floor(log2(n)) + 127
50%待验证浮点加法不满足结合律,(a+b)+c 和 a+(b+c) 在最后一位上可能有差异
50%待验证浮点加法和乘法在IEEE 754标准下不具备结合律,GEMM和GEMV内部求和顺序不同导致同一输入的激活值产生极微小差异
50%待验证JavaScript原生Date对象本质是一个IEEE 754双精度浮点数,表示自Unix纪元以来的毫秒数,直接依赖底层操作系统时钟
50%待验证JavaScript原生number类型为IEEE 754双精度浮点,其53位尾数在表示纳秒级时间戳(约1.7×10¹⁸量级)时会损失精度,这是建议改用BigInt的根本原因
50%待验证SSE2指令集于2001年随Pentium 4引入,带来符合IEEE 754标准的32/64位浮点运算
50%待验证FP32使用32位表示浮点数,其中1位符号位、8位指数位、23位尾数位
50%待验证根据IEEE 754的round-to-nearest-even舍入规则,向1.0加上小于半个ULP(约0.00000006)的数,结果仍为1.0,加法无效
50%