1.split分割小数点前后,分类获取
/* * val 传入的值;bit 保留几位 * 返回是字符串 */ function num (val,bit) { let arrMoney = val.toString().split('.'); if(arrMoney.length === 1) { // 传入来没小数点时 return val } else { return arrMoney[0] + '.' + arrMoney[1].substr(0,bit); } }
2.四舍五入
function num (val, bit) { return val.toFixed(bit) }
3.小数点失精
let f1 = 0.00001 * 100; let f2 = 0.000001 * 100; console.log(f1) // 0.001 console.log(f2) // 0.00009999999999999999 // 解决方法:先乘以比小数位大的整数,再除以比小数位大的整数/100 let f4 = (0.000001 * 100000000) / 1000000; // (100000000 / 1000000) = 100; console.log(f4)
let f3 = 0.0000001 * 100; console.log(f3) // 0.000009999999999999999