试一试
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.f16round 是 Math.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 |
浏览器兼容性
加载中…