JavaScript/Math/round

Math.round(x) は、引数 x を最も近い整数に丸めた値を返します。具体的には、x の小数部分が 0.5 以上の場合には切り上げ、0.5 未満の場合には切り捨てを行います[1]

  • 引数 xNaN の場合、NaN を返します。
  • 引数 x+0 または -0 の場合、x をそのまま返します。
  • 引数 xInfinity または -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 を使用して数値を最も近い整数に丸めています。ユーザーが入力した数値が NaNInfinity の場合、適切に処理されます。

小数点以下を指定して丸めるプログラム

以下のプログラムは、ユーザーが入力した数値を小数点以下指定桁数で丸めます。

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.14159digits = 2 の場合、rounded3.14 になります。

注意点

  • 0.5 の扱い: Math.round は、x がちょうど 0.5 の場合に切り上げを行います。例えば、Math.round(1.5)2 を返します。
  • 浮動小数点演算の誤差: 浮動小数点演算の特性上、x0.49999999999999994 のような値の場合、Math.round(x)1 を返すことがあります。これは、浮動小数点数の精度によるものです。

脚註

  1. これは、数学的には四捨五入に相当しますが、浮動小数点演算の特性上、x がちょうど 0.5 の場合の挙動に注意が必要です。

外部リンク

カテゴリ:Book:JavaScript#Math/round%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension