如何在 JavaScript 中向下取整一个数字?


本教程将教我们如何在 JavaScript 中向下取整一个数字。向下取整数字的含义是“返回等于或小于当前浮点数的整数”。

例如,如果我们向下取整数字9.99,我们将得到9作为输出,同样,对于8.01,我们将得到 8 作为输出。简单来说,如果您在数轴上表示当前数字,则必须返回位于当前数字左侧的最近整数。

在本教程中,我们将探讨三种不同的方法来在 JavaScript 中向下取整一个数字。

  • 使用 Math.floor() 函数

  • 使用 位运算符

  • 使用 取模 运算的自定义方法

所有方法都将逐一解释如下。

使用 Math.floor() 函数

Math.floor() 是 Math 库中 JavaScript 的内置方法。用户需要将数字作为参数传递,它将返回向下取整后的数字。

语法

在 JavaScript 中使用 Math.floor() 方法的语法如下。

Math.floor( number );

参数

  • number − 这是用户需要向下取整的数字输入。

示例

在下面的示例中,我们将演示如何使用 Math.floor() 函数向下取整数字。

<!DOCTYPE html>
<html>
<head>
   <title> Round down number </title>
</head>
<body>
   <h2> The Math.floor() Method </h2>
   <p> Result after rounding down the 10234.2433341 using the Math.floor() method − </p>
   <p id="output"> </p>
   <script>
      function roundDown(number) {
         let result = Math.floor(number);
         output.innerHTML = result;
      }
      let number = 10234.2433341;
      roundDown(number);
   </script>
</body>
</html>

在上面的输出中,用户可以看到,向下取整后,10234.2433341 变成了 10234,这是 10234.2433341 最近的小整数。

使用位运算符

如果我们对任何浮点数执行位运算符,它将删除数字的小数部分。此外,这是一个非常流畅的过程,并且比上面使用 Math.floor() 库函数的方法花费更少的时间。

用户可以执行按位或、双重非、右移左移运算来向下取整数字。但请记住,在使用位运算符向下取整负数时,用户需要从数字中减去 1,因为位运算符仅删除浮点数的小数部分。

在本部分中,我们将仅介绍使用按位或运算符向下取整数字的方法。用户可以使用其他位运算符以相同的方式。

语法

用户可以按照以下语法使用位运算符向下取整数字。

If( number > 0 ){
   let output = number | 0;
else {
   let output = (number - 1) | 0;
}

参数

  • number − 这是我们要向下取整的输入数字。

示例

在下面的示例中,我们创建了一个函数,使用按位或运算符向下取整正数和负数。

<!DOCTYPE html>
<html>
<head>
   <title> Example: Round down number </title>
</head>
<body>
   <h2>The Bitwise OR operator</h2>
   <p> After rounding down the 102.33341 using the Bitwise OR operator, output is
   <p id="PositiveOutput"></p>
   <p> After rounding down the -102.33341 using the Bitwise OR operator, output is </p>
   <p id="NegativeOutput"></p>
   <script>
      let PositiveOutput = document.getElementById("PositiveOutput");
      let NegativeOutput = document.getElementById("NegativeOutput");
      function roundDown(number) {
         if (number > 0) {
            let result = number | 0;
            PositiveOutput.innerHTML = result;
         } else {
            let result = (number) | 0; // removing decimal part from the number
            NegativeOutput.innerHTML = result - 1; //round down the number
         }
      }

      // pass number as an function argument
      roundDown(102.33341);
      roundDown(-102.33341);
   </script>
</body>
</html>

用户可以观察到,我们可以通过删除小数部分来向下取整正数,并通过删除小数部分并从输出中减去 1 来向下取整负数。

使用取模运算的自定义方法

我们将在此方法中使用取模运算符来解决我们的问题。当我们对任何浮点数取模 1 时,它将返回数字的小数部分。如果我们从该数字中减去数字的小数部分,则意味着我们已对其进行了向下取整。

此外,与上述方法一样,此方法仅删除数字的小数部分。因此,对于负数,用户必须从输出中减去 1 以向下取整数字。

用户可以查看以下示例。

10.2345 % 1 // returns the 0.2345
10.2345 - 10.2345 % 1 // returns 10.

语法

if( number > 0 ){
   let output = number  number % 1;
else {
   let output = number number %1 - 1;
}

示例

<!DOCTYPE html>
<html>
<body>
   <h2> Round down a number in JavaScript. </h2>
   <h4> After rounding down the 99.99999 using the Modulo operator, output is </h4>
   <p id="PositiveOutput"> </p>
   <h4> After rounding down the -99.99999 using the Modulo operator, output is </h4>
   <p id="NegativeOutput"> </p>
   <script>
      let PositiveOutput = document.getElementById("PositiveOutput");
      let NegativeOutput = document.getElementById("NegativeOutput");

      // rounding down the number using the modulo operator.
      function roundDown(floatNumber) {
         if (floatNumber> 0) {
            let result = floatNumber - floatNumber % 1;
            PositiveOutput.innerHTML = result;
         } else {
            let result = floatNumber - floatNumber % 1; // removing decimal part from the number
               NegativeOutput.innerHTML = result - 1; //round down the
         }
      }

      // pass number as an function argument
      roundDown(99.99999);
      roundDown(-99.99999);
   </script>
</body>
</html>

结论

上述三种方法中,向下取整数字最快的方法是第二种方法;因为位运算比其他运算花费更少的时间。第三种方法也比第一种方法快。但我们需要关注的是,在第二种和第三种方法中,我们必须为正整数和负整数创建不同的情况。

更新于: 2022年7月14日

1K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告