你从未听说的最快 double 转字符串算法:yy 一次乘法输出最短小数
来源:vitaut.net — 2026-08-10
📋 概述
vitaut 介绍 yyjson 里一个几乎无人知晓却极快的 dtoa 实现 yy:它属于 Schubfach 家族,目标仍是找出能往返还原成二进制浮点的最短十进制表示。yy 的精妙之处在于全程定宽整数运算,只需一次乘以预计算的 10 的幂,而经典 Schubfach 需要两到三次。作者用 E4M3(8 位浮点)做了一个可视化逐步演示,并剖析了一个看似 Bug 的边界情形。
🔑 核心要点
- yy 属于 Schubfach 家族,求能往返还原的最短十进制。
- 全程定宽整数,只需一次乘以 10 的幂,经典 Schubfach 要两三次。
- 用 E4M3(8 位浮点)可视化逐步演示四个候选与三个判定式。
- 边界情形揭示 p10 表截断与 round-half-to-even 的交互。
💡 金句
活在 JSON 库里的算法没有论文带来的引用数,但 yy 值得你认识它。
👍 0
👎 0
← 返回 Lobsters 首页