前言
在日常开发中,我们难免会遇到一些对于number型的数据要处理成精确到几位的的方式渲染。今天,这里就以比较常见的保留两位的小数为例,记录一下。
- 判断当前是否为整数(在不明确具体数据的情况下)
const isInteger = (obj: unknown) => {
return typeof obj === 'number' && obj % 1 === 0;
};
-
四舍五入显示小数后2位
const keepTwoDecimal = (num: number) => {
return Number(num.toFixed(2));
};
-
精确显示小数后2位
const keepTwoDecimalWithReg = (num: number) => {
return Number(num.toString().match(/^\d+(?:\.\d{0,2})?/));
};
-
精确显示小数点后2位,没有时补0
const keepTwoDecimalStr = (num: number) => {
const result = Number(num.toString().match(/^\d+(?:\.\d{0,2})?/));
let s = result.toString();
let rs = s.indexOf('.');
if (rs < 0) {
rs = s.length;
s += '.';
}
while (s.length <= rs + 2) {
s += '0';
}
return s;
};
-
结合位运算中的双非
~~
const keepTwoDecimalBit = (num: number) => {
return ~~(num * 100) / 100;
};
总结
这里仅仅列举一部分我觉得比较高效的方式,作为一种记录的方式以便使用