Skip to content

如何在JavaScript中去除数字的尾部零?

JavaScript提供了几种将数字值格式化为给定精度的方法。你可以使用Number.prototype.toFixed()Number.prototype.toPrecision()来实现类似的效果。然而,它们都不能处理小数部分的尾部零。下面是一些去除尾部零的方法。

正则表达式

假设数字被转换为定点字符串,你可以使用正则表达式来去除尾部零。你只需要匹配小数点(\.),并替换掉它后面的任何零(0+),直到字符串的末尾($)。

const toFixedWithoutZeros = (num, precision) =>
  num.toFixed(precision).replace(/\.0+$/, '');

toFixedWithoutZeros(1.001, 2); // '1'
toFixedWithoutZeros(1.500, 2); // '1.50'

这种方法的主要问题是,正则表达式只会在小数部分没有其他数字的情况下去除尾部零。编写一个能够从任何数字中去除尾部零的正则表达式会更加复杂,而且难以阅读。因此,不建议使用这种方法。

乘以1

一个更好的去除尾部零的方法是将数字乘以1。这种方法将从数字的小数部分中去除尾部零,考虑到小数点后面的非零数字。唯一的缺点是,结果是一个数值,所以必须将其转换回字符串。

const toFixedWithoutZeros = (num, precision) =>
  `${1 * num.toFixed(precision)}`;

## toFixedWithoutZeros

你可以使用`toFixedWithoutZeros`函数来移除数字的尾部零。该函数接受两个参数:`num`表示要处理的数字,`precision`表示保留的小数位数。

```js
const toFixedWithoutZeros = (num, precision) =>
  `${parseFloat(num.toFixed(precision))}`;

toFixedWithoutZeros(1.001, 2); // '1'
toFixedWithoutZeros(1.500, 2); // '1.5'

Number.parseFloat

与前面的方法类似,你可以使用Number.parseFloat()来移除数字的尾部零。该方法还考虑了小数点后的非零数字。我们推荐使用这种方法,因为它最易读。

const toFixedWithoutZeros = (num, precision) =>
  `${Number.parseFloat(num.toFixed(precision))}`;

toFixedWithoutZeros(1.001, 2); // '1'
toFixedWithoutZeros(1.500, 2); // '1.5'