JavaScript小技巧之保留两位小数,教你轻松应对金额计算!

2,629 阅读2分钟

cover.png

作为一名前端开发者,处理数字是我们日常工作中不可避免的一部分。而在处理数字时,经常需要对数据进行精度控制,尤其是在计算金额、税率等关键业务场景下。本文将介绍使用JS实现保留两位小数的几种方法。

方法一:toFixed()

最简单的方法当属 toFixed(),它是JS原生方法之一,可以将数字保留指定位数的小数。

const num = 3.1415926;
const result = num.toFixed(2);
console.log(result); // 3.14

需要注意的是,使用 toFixed() 会将数值转换为字符串类型,并且可能出现四舍五入的情况。例如:

const num1 = 3.145;
const num2 = 3.144;
console.log(num1.toFixed(2)); // 3.15
console.log(num2.toFixed(2)); // 3.14

这个方法虽然简单,但是如果你只是想保留两位小数而不需要四舍五入,就需要寻找其他方法了。

方法二:Math.round()

如果你只是想保留两位小数,而不需要四舍五入,那么可以使用 Math.round() 方法。

const num = 3.1415926;
const result = Math.round(num * 100) / 100;
console.log(result); // 3.14

上述代码中,我们将数字乘以100,然后再使用 Math.round() 四舍五入,并除以100得到保留两位小数的结果。

需要注意的是,如果你要保留的小数位数不止两位,那么就需要修改该方法中的相应倍数。例如:

const num = 3.1415926;
const result = Math.round(num * 1000) / 1000;
console.log(result); // 3.142

方法三:正则表达式

使用正则表达式也可以实现对数字的精度控制。下面是一个例子:

const num = 3.1415926;
const result = num.toString().match(/^\d+(?:.\d{0,2})?/);
console.log(result[0]); // 3.14

上述代码中,我们首先将数字转换为字符串类型,然后使用正则表达式匹配数字,并保留小数点后两位。其中 \d+ 表示匹配整数部分,.\d{0,2} 表示匹配小数部分,且小数部分最多只能有两位。

需要注意的是,这种方法可能会返回 null 或者空数组,因此在使用时需要做好错误处理。

方法四:使用第三方库

如果你不想自己写函数,也可以使用一些成熟的第三方库来实现精度控制。例如 big.jsdecimal.js 等。这里以 big.js 为例:

const num = 3.1415926;
const result = new Big(num).toFixed(2);
console.log(result); // 3.14

上述代码中,我们先将数字转换为 Big 类型,然后使用 toFixed() 方法保留两位小数。

需要注意的是,使用第三方库虽然可以方便地实现精度控制,但是也会增加项目的体积和复杂度,需要根据实际情况进行取舍。

结语

本文介绍了几种JS实现保留两位小数的方法,包括 toFixed()Math.round()、正则表达式以及第三方库。每种方法都有其适用的场景,需要根据具体情况选择合适的方法。

更多题目

juejin.cn/column/7201…