このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
Math.fround()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
Math.fround() は静的メソッドで、ある数値を表す最も近い32 ビット単精度浮動小数点数を返します。
In this article
試してみましょう
console.log(Math.fround(5.5));// 予想される結果: 5.5console.log(Math.fround(5.05));// 予想される結果: 5.050000190734863console.log(Math.fround(5));// 予想される結果: 5console.log(Math.fround(-5.05));// 予想される結果: -5.050000190734863構文
Math.fround(doubleFloat)引数
doubleFloat数値です。
返値
doubleFloat の最も近い32 ビット単精度浮動小数点数の表現です。
解説
JavaScript は内部的に 64 ビットの倍精度浮動小数点数を使用しており、非常に高い精度を提供しています。しかし、例えばFloat32Array から値を読み込む場合など 32 ビットの浮動小数点数を扱うことがあるかもしれません。これは混乱を招く可能性があります。 64 ビットの浮動小数点数と 32 ビットの浮動小数点数が等しいかどうかをチェックすると、一見同じように見える数値であっても失敗することがあります。
これを解決するには、Math.fround() を使用して、 64 ビット浮動小数点数を 32 ビットの浮動小数点数にキャストすることができます。内部的には、 JavaScript は数値を 64 ビットの浮動小数点数として扱い続けますが、仮数の 23 番目のビットに「偶数への丸め」を実行し、それに続く仮数ビットをすべて 0 に設定します。数値が 32 ビットの浮動小数点数の範囲外の場合は、Infinity または-Infinity が返されます。
fround() はMath の静的メソッドであるため、生成したMath オブジェクトのメソッドとしてではなく、常にMath.fround() として使用するようにしてください (Math はコンストラクターではありません)。
例
>Math.fround() の使用
1.5 という数値は二進数で正確に表すことができ、32 ビットと 64 ビットとで同じになります。
Math.fround(1.5); // 1.5Math.fround(1.5) === 1.5; // trueしかし、 1.337 という数値は二進数では正確に表すことができず、32 ビットと 64 ビットとで異なります。
Math.fround(1.337); // 1.3370000123977661Math.fround(1.337) === 1.337; // false は 32 ビット浮動小数点では大きすぎるため、Infinity が返されます。
2 ** 150; // 1.42724769270596e+45Math.fround(2 ** 150); // Infinity仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-math.fround> |