编程技术文章分享与教程

网站首页 > 技术文章 正文

碎片时间学编程「248]:如何从 JavaScript 的数字中删除尾随零?

hmc789 2024-11-27 14:46:29 技术文章 2 ℃


如何从 JavaScript 的数字中删除尾随零?


JavaScript 提供了几种将数值格式化为给定精度的方法。也就是说,您可以使用 Number.prototype.toFixed() 和 Number.prototype.toPrecision() 方法来达到类似的效果。但是,它们都不处理小数部分的尾随零。您可以通过以下几种方式删除它们:


正则表达式


如果将数字转换为定点字符串,则可以使用正则表达式删除尾随零。您所要做的就是匹配小数点 (\.) 并替换它后面的所有零 (0+),直到字符串 ($) 结束。


JavaScript

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(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'


更多内容请访问我的网站:https://www.icoderoad.com

Tags:

标签列表
最新留言