Math.fround()
Math.fround()
静态方法返回数字的最近32 位单精度 浮点数表示形式。
试一试
语法
js
Math.fround(doubleFloat)
参数
doubleFloat
-
一个数字。
返回值
doubleFloat
的最近32 位单精度 浮点数表示形式。
描述
JavaScript 在内部使用 64 位双精度浮点数,这提供了非常高的精度。但是,有时您可能在使用 32 位浮点数,例如,如果您正在从Float32Array
中读取值。这会导致混淆:即使数字看似相同,检查 64 位浮点数和 32 位浮点数的相等性也可能会失败。
为了解决这个问题,可以使用 Math.fround()
将 64 位浮点数转换为 32 位浮点数。在内部,JavaScript 仍然将该数字视为 64 位浮点数,只是对尾数的第 23 位执行“舍入到偶数”,并将所有后续尾数位设置为0
。如果该数字超出了 32 位浮点数的范围,则返回Infinity
或 -Infinity
。
由于 fround()
是 Math
的静态方法,因此您始终使用 Math.fround()
来使用它,而不是将其用作您创建的 Math
对象的方法(Math
不是构造函数)。
示例
使用 Math.fround()
数字 1.5 可以精确地表示在二进制数字系统中,并且在 32 位和 64 位中是相同的
js
Math.fround(1.5); // 1.5
Math.fround(1.5) === 1.5; // true
但是,数字 1.337 无法精确地表示在二进制数字系统中,因此它在 32 位和 64 位中有所不同
js
Math.fround(1.337); // 1.3370000123977661
Math.fround(1.337) === 1.337; // false
对于 32 位浮点数而言太大,因此返回 Infinity
js
2 ** 150; // 1.42724769270596e+45
Math.fround(2 ** 150); // Infinity
规范
规范 |
---|
ECMAScript 语言规范 # sec-math.fround |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。