Movatterモバイル変換


[0]ホーム

URL:


  1. 面向开发者的 Web 技术
  2. JavaScript
  3. JavaScript 参考
  4. JavaScript 标准内置对象
  5. Math
  6. Math.floor()

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in EnglishAlways switch to English

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() 函数总是返回小于等于一个给定数字的最大整数。

尝试一下

console.log(Math.floor(5.95));// Expected output: 5console.log(Math.floor(5.05));// Expected output: 5console.log(Math.floor(5));// Expected output: 5console.log(Math.floor(-5.05));// Expected output: -6

语法

js
Math.floor(x)

参数

x

一个数字。

返回值

小于等于x 的最大整数。它的值与-Math.ceil(-x) 相同。

描述

因为floor()Math 的静态方法,所以你应始终使用Math.floor(),而不是作为你创建的Math 对象的方法(Math 不是构造函数)。

示例

使用 Math.floor()

js
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 函数总是将输入调整为个位数,decimalAdjust 接受exp 参数,该参数指定小数点左侧应该调整的位数。例如,-1 表示它将在小数点后留下一位数字(如 "× 10-1")。此外,它还允许你通过type 参数选择调整方式——roundbottomceiling

它是这样做的:将数字乘以 10 的幂,然后四舍五入到最接近的整数,然后除以 10 的幂。为了更好地保持精度,它利用了数字的toString() 方法,该方法使用科学记数法表示任意数字(如6.02e23)。

js
/** * Adjusts a number to the specified digit. * * @param {"round" | "floor" | "ceil"} type The type of adjustment. * @param {number} value The number. * @param {number} exp The exponent (the 10 logarithm of the adjustment base). * @returns {number} The adjusted value. */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}`);  // Shift back  const [newMagnitude, newExponent = 0] = adjustedValue.toString().split("e");  return Number(`${newMagnitude}e${+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

浏览器兼容性

参见

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp