JavaScript/Math/round
Math.round(x)
は、引数 x
を最も近い整数に丸めた値を返します。具体的には、x
の小数部分が 0.5
以上の場合には切り上げ、0.5
未満の場合には切り捨てを行います[1]。
- 引数
x
がNaN
の場合、NaN
を返します。 - 引数
x
が+0
または-0
の場合、x
をそのまま返します。 - 引数
x
がInfinity
または-Infinity
の場合、x
をそのまま返します。
例
数値を丸めるプログラム
以下のプログラムは、ユーザーが入力した数値を最も近い整数に丸めます。
const f = p => { for (;;) { a = prompt(`${p}は何ですか?`); if (!isNaN(a)) return a; alert(`${p}に、入力ミスがあります。 "${a}"`); } } for (;;) { const x = f("数値"); const rounded = Math.round(x); if (rounded !== Infinity) { alert(`数値 ${x} を丸めると ${rounded} です。`); break; } alert("入力が大きすぎます。"); }
このプログラムでは、Math.round
を使用して数値を最も近い整数に丸めています。ユーザーが入力した数値が NaN
や Infinity
の場合、適切に処理されます。
小数点以下を指定して丸めるプログラム
以下のプログラムは、ユーザーが入力した数値を小数点以下指定桁数で丸めます。
const f = p => { for (;;) { a = prompt(`${p}は何ですか?`); if (!isNaN(a)) return a; alert(`${p}に、入力ミスがあります。 "${a}"`); } } for (;;) { const x = f("数値"); const digits = f("小数点以下の桁数"); const factor = 10 ** digits; const rounded = Math.round(x * factor) / factor; if (rounded !== Infinity) { alert(`数値 ${x} を小数点以下 ${digits} 桁で丸めると ${rounded} です。`); break; } alert("入力が大きすぎます。"); }
このプログラムでは、Math.round
を使用して数値を小数点以下指定桁数で丸めています。例えば、x = 3.14159
で digits = 2
の場合、rounded
は 3.14
になります。
注意点
- 0.5 の扱い:
Math.round
は、x
がちょうど0.5
の場合に切り上げを行います。例えば、Math.round(1.5)
は2
を返します。 - 浮動小数点演算の誤差: 浮動小数点演算の特性上、
x
が0.49999999999999994
のような値の場合、Math.round(x)
は1
を返すことがあります。これは、浮動小数点数の精度によるものです。
脚註
- ↑ これは、数学的には四捨五入に相当しますが、浮動小数点演算の特性上、
x
がちょうど0.5
の場合の挙動に注意が必要です。