如何在 JavaScript 中将数字舍入到小数点后一位?


在本教程中,我们将学习如何使用 JavaScript 将数字舍入小数点后一位。舍入浮点数并在小数点后显示特定位数的需求多种多样。

在本例中,我们只需要显示小数点后一位数字。但是,在本教程结束时,我们将创建一个可自定义的手动函数,可以舍入数字并在小数点后显示特定位数的数字。

此示例让用户了解将数字舍入到小数点后一位的基本需求。假设您正在为在线商店开发应用程序,您需要显示每种产品的价格,但在数据库中,您已将价格存储到小数点后五位。从数据库获取产品价格后,您需要显示到小数点后一位。在这种情况下,您必须找到解决问题的方法。

此外,在本教程中,我们有不同的方法来实现我们的目标。

  • 使用 `toFixed()` 方法

  • 使用 `Math.round()` 函数

使用 `toFixed()` 方法

在这种方法中,我们将使用 **`toFixed()`** 方法将数字舍入到小数点后一位。它接受一个参数;您希望保留在小数点后的 *位数*。此外,即使您添加数字输入,`toFixed()` 方法也“*返回字符串输出*”。我们需要将字符串输出转换为浮点数。

语法

用户可以按照以下语法使用 `toFixed()` 方法。

number.toFixed(decimal_digits);

参数

  • **`decimal_digits`** − 此参数接受数字输入,表示您希望保留在小数点后的位数。在本例中,我们将使用 1 作为此参数。

示例

以下示例演示如何使用 `toFixed()` 方法将数字舍入到小数点后一位。如上所述,`toFixed()` 方法返回一个字符串,因此我们将再次将返回的字符串值转换为浮点数。

<!DOCTYPE html>
<html>
   <body>
   <h2>Round a number to 1 decimal place in JavaScript</h2>
   <h4> After rounding the 103.72456 to 1 decimal place, output is </h4>
   <p id="output"> </p>
   <p id="previousType"> </p>
   <p id="AfterType"> </p>
   <script type="text/javascript">
      let output = document.getElementById("output");
      let previousType = document.getElementById("previousType");
      let AfterType = document.getElementById("AfterType");

      // rounding number to 1 decimal place using toFixed() method
      let number = 103.72456;
      let result = number.toFixed(1);
      output.innerHTML = result;
      previousType.innerHTML = " The type of output is: " + typeof result;
      result = parseFloat( result );
      AfterType.innerHTML = " The type of the output after converting to float is " + typeof result;
   </script>
</body>
</html>

在上面的输出中,用户可以看到使用 **`toFixed()`** 方法将数字舍入到小数点后一位后的输出类型是一个字符串。之后,我们使用 **`parseFloat()`** 函数将输出转换为浮点数。

使用 Math.round() 函数

在这种方法中,我们将使用 JavaScript 数学库中的 **`Math.round()`** 函数。`Math.round()` 函数将数字舍入到最接近的数字,但我们将应用一些精确的逻辑来仅将数字舍入到一位。

我们可以将数字乘以 10 并应用 `round()` 函数。之后,我们可以再次将舍入后的数字除以 10,这样我们就可以实现我们的目标。

用户可以使用此示例来理解上述方法。例如,我们想将数字 10.34532 舍入到小数点后一位。让我们将数字乘以 10,它变成 103.4532。现在,如果我们应用 round 函数,我们得到的结果是 103。接下来,将数字除以 10,数字变成 10.3,我们得到正确的结果。

语法

let result = Math.round(number*10)/10;

示例

在下面的示例中,我们创建了一个舍入函数,以便用户可以根据自己的需要自定义它。我们的函数接受 2 个参数,一个是您要舍入的数字,另一个是您希望保留在小数点后的位数。

<!DOCTYPE html>
<html >
   <body>
   <h2>Round a number to 1 decimal place in JavaScript</h2>
   <p> Result after rounding the 81.43426 to 1 decimal place using the Math.Round() method − </p>
   <p id="output"> </p>
   <script>
      let output = document.getElementById( "output" );

      // customizable function to round number to any decimal place
      function roundNumber(number, decimal_digit) {
         let powerOften = Math.pow( 10, decimal_digit );
         let result = Math.round( number * powerOften ) / powerOften;
         output.innerHTML = result;
      }
      let number = 81.43426;
      roundNumber(number, 1);
   </script>
</body>
</html>

在上面的示例中,我们为 `decimal_digit` 参数传递了 1 作为值。因此,我们将得到 10¹ = 10,`Math.round()` 函数将数字舍入到小数点后一位。

如果用户想将数字舍入到 n 位小数,他们将 n 作为 `decimal_digit` 值传递,作为 10 的幂,他们得到 10ⁿ,`Math.round()` 函数将数字舍入到 n 位小数。

结论

在本教程中,我们使用了两种方法将数字舍入到小数点后一位。第一种方法不太好,因为它返回字符串,您需要再次将其转换为浮点数。第二种方法是有益的,因为它即使可以将数字舍入到 n 位小数也是可自定义的。

更新于:2022年7月14日

26K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告