Math.f16round()

基准线 2025
新推出

自 ⁨2025 年 4 月⁩起,此功能适用于最新设备和浏览器版本。此功能可能不适用于较旧的设备或浏览器。

Math.f16round() 静态方法返回一个数字最接近的 16 位半精度浮点表示。

试一试

console.log(Math.f16round(5.5));
// Expected output: 5.5

console.log(Math.f16round(5.05));
// Expected output: 5.05078125

console.log(Math.f16round(5));
// Expected output: 5

console.log(Math.f16round(-5.05));
// Expected output: -5.05078125

语法

js
Math.f16round(doubleFloat)

参数

doubleFloat

一个数字。

返回值

doubleFloat 最接近的 16 位半精度浮点表示。

描述

Math.f16roundMath.fround() 的 16 位对应版本。它旨在平滑与 float16 数字交互时的一些粗糙边缘,例如在读取 Float16Array 时。在内部,JavaScript 继续将数字视为 64 位浮点数,它仅对尾数的第 10 位执行“舍入到偶数”,并将所有后续尾数位设置为 0。如果数字超出了 16 位浮点数的范围,则返回 Infinity-Infinity

由于 f16round()Math 的静态方法,您始终将其作为 Math.f16round() 调用,而不是作为您创建的 Math 对象的实例方法(Math 不是构造函数)。

示例

使用 Math.f16round()

数字 1.5 可以精确地表示在二进制数系统中,并且在 16 位和 64 位表示中是相同的。

js
Math.f16round(1.5); // 1.5
Math.f16round(1.5) === 1.5; // true

然而,数字 1.337 不能精确地表示在二进制数系统中,因此它在 16 位和 64 位表示中是不同的。

js
Math.f16round(1.337); // 1.3369140625
Math.f16round(1.337) === 1.337; // false

100000 对于 16 位浮点数来说太大了,所以返回 Infinity

js
Math.f16round(100000); // Infinity

规范

规范
ECMAScript® 2026 语言规范
# sec-math.f16round

浏览器兼容性

另见