このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
Math.floor()
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.floor() は静的メソッドで、与えられた数値以下の最大の整数を返します。
In this article
試してみましょう
console.log(Math.floor(5.95));// 予想される結果: 5console.log(Math.floor(5.05));// 予想される結果: 5console.log(Math.floor(5));// 予想される結果: 5console.log(Math.floor(-5.05));// 予想される結果: -6構文
Math.floor(x)引数
x数値です。
返値
x 以下の最大の整数です。これは-Math.ceil(-x) と同じ値です。
解説
floor() はMath オブジェクトの静的なメソッドなので、自ら生成したMath オブジェクトのメソッドとしてではなく、常に、Math.floor() として使用するようにしてください (Math のコンストラクターはありません)。
例
>Math.floor() の使用
Math.floor(-Infinity); // -InfinityMath.floor(-45.95); // -46Math.floor(-45.05); // -46Math.floor(-0); // -0Math.floor(0); // 0Math.floor(4); // 4Math.floor(45.05); // 45Math.floor(45.95); // 45Math.floor(Infinity); // Infinity十進数の丸め
この例では、decimalAdjust() というメソッドを実装します。これは、Math.floor()、Math.ceil()、Math.round() の拡張メソッドです。Math の 3 つの関数は常に数値を小数点以下の桁数に調整しますが、decimalAdjust はexp 引数を受け入れ、数値を調整する小数点以下の桁数を指定します。例えば、-1 は小数点以下 1 桁("× 10-1" のように)を意味します。さらに、round、floor、ceil のいずれかの調整方法をtype 引数により選択できます。
これは、数値に 10 の累乗を乗算し、その結果を最も近い整数に丸め、さらに 10 の累乗で割ることで行います。より精度を維持するために、Number のtoString() メソッドを利用します。このメソッドは、大きな数値や小さな数値を科学記法(6.02e23 など)で表します。
/** * 数値を指定された桁数に調整します。 * * @param {"round" | "floor" | "ceil"} type 調整する型。 * @param {number} value 数値。 * @param {number} exp 指数する(補正の底の10の対数)。 * @returns {number} 補正値。 */function decimalAdjust(type, value, exp) { type = String(type); if (!["round", "floor", "ceil"].includes(type)) { throw new TypeError( "小数点調整の型は、'round'、'floor'、'ceil' のいずれかである必要があります。", ); } exp = Number(exp); value = Number(value); if (exp % 1 !== 0 || Number.isNaN(value)) { return NaN; } else if (exp === 0) { return Math[type](value); } const [magnitude, exponent = 0] = value.toString().split("e"); const adjustedValue = Math[type](`${magnitude}e${exponent - exp}`); // Shift back const [newMagnitude, newExponent = 0] = adjustedValue.toString().split("e"); return Number(`${newMagnitude}e${Number(newExponent) + exp}`);}// Decimal roundconst round10 = (value, exp) => decimalAdjust("round", value, exp);// Decimal floorconst floor10 = (value, exp) => decimalAdjust("floor", value, exp);// Decimal ceilconst ceil10 = (value, exp) => decimalAdjust("ceil", value, exp);// Roundround10(55.55, -1); // 55.6round10(55.549, -1); // 55.5round10(55, 1); // 60round10(54.9, 1); // 50round10(-55.55, -1); // -55.5round10(-55.551, -1); // -55.6round10(-55, 1); // -50round10(-55.1, 1); // -60// Floorfloor10(55.59, -1); // 55.5floor10(59, 1); // 50floor10(-55.51, -1); // -55.6floor10(-51, 1); // -60// Ceilceil10(55.51, -1); // 55.6ceil10(51, 1); // 60ceil10(-55.59, -1); // -55.5ceil10(-59, 1); // -50仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-math.floor> |