Deep Dive技术精读
为什么 0.1 + 0.2 不等于 0.3?IEEE 754 浮点数、尾数截断与前端精度避坑指南
从十进制小数转二进制循环小数的数学推导,深入剖析 IEEE 754 双精度 64 位浮点数的内存布局与截断误差机制,解释为什么 Number.MAX_SAFE_INTEGER 恰好是 2^53-1,以及在前端金融与工程计算中规避浮点灾难的最佳实践。
Read full article →阅读完整解析 →Deep Dive技术精读
2^64 - 1 和 2^64 在 JavaScript 里是同一个数字
Number("18446744073709551615") 与 Number("18446744073709551616") 都返回 18446744073709552000,且 === 为 true。2^64 下方的 double 间距是 2048、上方是 4096,2^53+1 向下舍、2^53+3 向上舍、2^64+2048 恰好落在两个 double 正中按向偶数舍入。逐个打掉 BigInt 往返、前缀按行覆盖、-0xff 的符号位置、非法字符返回 null、一行坏数据不拖累其余行,并说清为什么打印出来的十进制串不是那个整数值。
Read full article →阅读完整解析 →