Start · Sprachen · JavaScript · Referenz · Math.floor()

Math.floor()

Methode

Die statische Methode <code>Math.floor()</code> rundet immer ab und liefert die größte ganze Zahl kleiner oder gleich der übergebenen Zahl.

Kategorie: method-property

Signatur

Math.floor(x)

Beschreibung

Die statische Methode Math.floor() rundet immer ab und gibt die größte ganze Zahl zurück, die kleiner oder gleich einer gegebenen Zahl ist.

Da floor() eine statische Methode von Math ist, wird sie immer als Math.floor() verwendet und nicht als Methode eines selbst erzeugten Math-Objekts (Math ist kein Konstruktor).

Parameter

Name Typ Default Beschreibung
$x Pflicht number — Eine Zahl.

Rückgabewert

Typ
number
Beschreibung
Die größte ganze Zahl, die kleiner oder gleich x ist. Sie entspricht dem Wert von -Math.ceil(-x).

Beispiele

Verwendung von Math.floor()

Math.floor(-Infinity); // -Infinity
Math.floor(-45.95); // -46
Math.floor(-45.05); // -46
Math.floor(-0); // -0
Math.floor(0); // 0
Math.floor(4); // 4
Math.floor(45.05); // 45
Math.floor(45.95); // 45
Math.floor(Infinity); // Infinity

Anpassung auf Dezimalstellen

/**
 * Passt eine Zahl an die angegebene Stelle an.
 *
 * @param {"round" | "floor" | "ceil"} type Die Art der Anpassung.
 * @param {number} value Die Zahl.
 * @param {number} exp Der Exponent (der Zehnerlogarithmus der Anpassungsbasis).
 * @returns {number} Der angepasste Wert.
 */
function decimalAdjust(type, value, exp) {
  type = String(type);
  if (!["round", "floor", "ceil"].includes(type)) {
    throw new TypeError(
      "The type of decimal adjustment must be one of 'round', 'floor', or '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}`);
  // Zurückverschieben
  const [newMagnitude, newExponent = 0] = adjustedValue.toString().split("e");
  return Number(`${newMagnitude}e${Number(newExponent) + exp}`);
}

// Dezimales Runden
const round10 = (value, exp) => decimalAdjust("round", value, exp);
// Dezimales Abrunden
const floor10 = (value, exp) => decimalAdjust("floor", value, exp);
// Dezimales Aufrunden
const ceil10 = (value, exp) => decimalAdjust("ceil", value, exp);

// Round
round10(55.55, -1); // 55.6
round10(55.549, -1); // 55.5
round10(55, 1); // 60
round10(54.9, 1); // 50
round10(-55.55, -1); // -55.5
round10(-55.551, -1); // -55.6
round10(-55, 1); // -50
round10(-55.1, 1); // -60
// Floor
floor10(55.59, -1); // 55.5
floor10(59, 1); // 50
floor10(-55.51, -1); // -55.6
floor10(-51, 1); // -60
// Ceil
ceil10(55.51, -1); // 55.6
ceil10(51, 1); // 60
ceil10(-55.59, -1); // -55.5
ceil10(-59, 1); // -50