Lobsters | 📄 原文链接 | 2026-08-12 收录

你没听说过的快速 dtoa 算法:yy 如何用一次乘法输出最短小数

来源:vitaut.net — 2026-08-10

📋 概述

作者介绍 yyjson 中一个几乎无人知晓却极快的浮点数转字符串(dtoa)算法 yy。它属于 Schubfach 家族,核心思路是找最短的十进制表示,使其能往返还原成原始二进制浮点。yy 的精妙之处在于全程用定宽整数算术,且只需一次乘以预计算的 10 的幂,而经典 Schubfach 需要两到三次。作者用 E4M3(8 位浮点)格式做了一个可视化逐步演示,并剖析了一个看起来像 Bug 的边界情形:由于 p10 表截断导致的工作字少了 1 个 LSB,靠一个奇偶校正项 eta 把判定拉回正确——这恰好展示了 round-half-to-even 与表截断在实际中的交互。

🔑 核心要点

💡 金句

活在 JSON 库里的算法没有论文带来的引用数,但 yy 值得你认识它。
← 返回 Lobsters 首页