Math.f16round()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Math.f16round()
は静的メソッドで、数値に最も近い 16 ビット半精度浮動小数点表現を返します。
試してみましょう
構文
Math.f16round(doubleFloat)
引数
doubleFloat
-
数値です。
返値
doubleFloat
に最も近い 16 ビット半精度浮動小数点表現です。
解説
Math.f16round
は、 Math.fround()
の 16 ビット版です。これは、 Float16Array
から読み込む場合など、 float16 の数値を操作する際に、意図通りに動作します。内部的には、JavaScript で数値は引き続き 64 ビット浮動小数点数として扱い、仮数部の 10 ビット目で「偶数への丸め」を行い、続く仮数部のビットすべてを 0 に設定します。数値が 16 ビット浮動小数点数の範囲外である場合、 Infinity
または -Infinity
が返値として返されます。
f16round()
は Math
の静的メソッドであるため、生成した Math
オブジェクトのメソッドとしてではなく、常に Math.f16round()
として使用するようにしてください(Math
はコンストラクターではありません)。
例
Math.f16round() の使用
1.5 という数字は 2 進法で正確に表すことができ、 16 ビットでも 64 ビットでも同じです。
Math.f16round(1.5); // 1.5
Math.f16round(1.5) === 1.5; // true
しかし、 1.337 という数字は 2 進法では正確に表すことができないため、 16 ビットと 64 ビットでは差が出ます。
Math.f16round(1.337); // 1.3369140625
Math.f16round(1.337) === 1.337; // false
100000 は 16 ビット浮動小数点では大きすぎるので、 Infinity
が返されます。
Math.f16round(100000); // Infinity
仕様書
Specification |
---|
Float16Array # sec-math.f16round |
ブラウザーの互換性
BCD tables only load in the browser