JS 将分整数改为保留两位小数
2020-05-13 本文已影响0人
南窗云
问题
作为一个前端小白,总会遇到形形色色的奇葩问题。
看到前端同事超级喜欢链式处理字符串,感觉很方便,所以特意尝试了下,没想到就遇到了问题
需求是金额要展示 保留两位小数,比如 1234.56
接口返回的是分整数,是这样的 123456
都用来表示 一千二百三十四元五角六分
处理
const price = paymentAmount.split('').splice(-2, 0, '.').join('')
上述代码比较简单,先将字符串拆成数组,然后在倒数第二位插入英文句号,最后再合并到一起。
完美的链式调用,返回给我的是 空 。
解决
几经波折,找到原因,Splice 方法返回的不是修改后的数组:
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
返回的只是被删除的项目,而不是处理后的数组本身
splice 语法
我们知道,第二个参数决定要替换掉多少个元素,设为0,就是替换掉0个元素,那么返回值就是空数组,其实这种情况就是添加元素。
所以我得出一个结论:Splice 不可链式调用,如果你要的是整个葫芦
最终解决方案是,为了调用方便,封装了个方法:
// 格式化 分整数 为 保留两位小数
formatPirce(paymentAmount) {
const price = paymentAmount.split('');
price.splice(-2, 0, '.');
return price.join('');
},
// 调用
value: `¥${this.formatPirce(paymentAmount)}`,
最佳方案(2020.5.14)
好吧,我果真是小白,不用这么复杂的,直接 * 0.01 然后 toFixed(2) 就行了。
const price = (paymentAmount * 0.01).toFixed(2);
写在最后
小白问题多,其实是想放张鸣人的图片
うずまき ナルト