TC39 的 Float16Array 进入 Baseline 2026:JS 做 ML 与图形需要知道什么
来源:dev.to — 2026-10-09
📋 概述
JavaScript 在 ML 与图形负载上的性能问题,很多来自在不同数值格式之间搬运数据:Worker 解码 Float32 张量、再交给期待半精度的 WebGPU 着色器,编译器不会报错,着色器照常运行,内存压力却翻倍。Float16Array 在 2024 年达到 TC39 Stage 4,今年取得 Baseline 2026 状态,提供原生 16 位 IEEE 754 半精度浮点与 TypedArray、DataView 支持,DataView 也新增了 getFloat16 与 setFloat16。代价是精度:10 位尾数、5 位指数,范围约 ±65504、约 3 到 4 位十进制有效数字,3.14159265 会变成 3.140625。财务计算与需要亚像素精度的坐标变换都不适合它。
🔑 核心要点
- 16 位 = 1 符号位 + 5 指数位 + 10 尾数位,范围约 ±65504、约 3 到 4 位有效数字。
- WebGPU 计算着色器、ONNX 量化与 HDR 颜色缓冲原生就是半精度,匹配格式可消除驱动层的转换开销。
- DataView 新增 getFloat16 与 setFloat16,替代手写的位打包例程。
- Baseline 2026 意味着生产可用,但旧环境需要基于 Uint16Array 的 polyfill。
💡 金句
如果算法依赖超过三位小数的精度,Float16 给出的就是错误答案。
👍 0
👎 0
← 返回 dev.to 首页