JavaScript/Math/fround
Math.fround(x)
は、引数 x
を最も近い32ビット単精度浮動小数点数に丸めた値を返します。これは、x
の値を32ビット単精度浮動小数点数として表現するために使用されます[1]。
- 引数
x
がNaN
の場合、NaN
を返します。 - 引数
x
が+0
の場合、+0
を返します。 - 引数
x
が-0
の場合、-0
を返します。 - 引数
x
がInfinity
の場合、Infinity
を返します。 - 引数
x
が-Infinity
の場合、-Infinity
を返します。
例
32ビット単精度浮動小数点数に丸めるプログラム
以下のプログラムは、ユーザーが入力した値を32ビット単精度浮動小数点数に丸めます。
const f = p => { for (;;) { a = prompt(`${p}は何ですか?`); if (!isNaN(a)) return a; alert(`${p}に、入力ミスがあります。 "${a}"`); } } for (;;) { const x = f("値"); const fround = Math.fround(x); if (!isNaN(fround)) { alert(`${x} を32ビット単精度浮動小数点数に丸めると ${fround.toFixed(3)} です。`); break; } alert("入力が大きすぎます。"); }
このプログラムでは、Math.fround
を使用して値を32ビット単精度浮動小数点数に丸めています。ユーザーが入力した値が NaN
や Infinity
の場合、適切に処理されます。
32ビット単精度浮動小数点数と64ビット倍精度浮動小数点数の比較
以下のプログラムは、Math.fround
と通常の64ビット倍精度浮動小数点数の結果を比較します。
const f = p => { for (;;) { a = prompt(`${p}は何ですか?`); if (!isNaN(a)) return a; alert(`${p}に、入力ミスがあります。 "${a}"`); } } for (;;) { const x = f("値"); const fround = Math.fround(x); const normal = x; if (!isNaN(fround) && !isNaN(normal)) { alert(`${x} を32ビット単精度浮動小数点数に丸めると ${fround.toFixed(3)} です。\n通常の64ビット倍精度浮動小数点数では ${normal.toFixed(3)} です。`); break; } alert("入力が大きすぎます。"); }
このプログラムでは、Math.fround
と通常の64ビット倍精度浮動小数点数の結果を比較しています。Math.fround
は、32ビット単精度浮動小数点数に丸めるため、64ビット倍精度浮動小数点数よりも精度が低くなることがわかります。
注意点
- 精度:
Math.fround
は、32ビット単精度浮動小数点数に丸めるため、64ビット倍精度浮動小数点数よりも精度が低くなります。 - 戻り値の範囲:
Math.fround
の戻り値は、32ビット単精度浮動小数点数の範囲です。
脚註
- ↑ これは、IEEE 754単精度浮動小数点数の形式に従って丸められます。