Math

101 阅读1分钟

Number类型

  • 由于前端的Number类型为双精度浮点数
  • 如果两个Number类型的数值进行计算,则会先转化为二进制,再由二进制转化为十进制,所以肯定会出现偏差
    • 处理思路:先升级再降级
let v1 = 65.0;
let v2 = 0.119;
let valueToFixed2 = (v1 * v2).toFixed(2); //"7.73"
let value2 = v1 * v2; //计算器:7.735;前端:7.734999999999999
let valueRound = Math.round(v1 * v2 * 100) / 100; //7.74
let valueRoundToFixed2 = (Math.round(v1 * v2 * 1000) / 1000).toFixed(2); //7.74
  • 定义方法处理数值计算
function round(number,precision){
    return Math.round(+number + 'e' + precision) / Math.pow(10,precision)
}
//e为科学计算法
//2e2:2和10的2次幂(2*10*10)
function round(num, s) {
  return Math.round(num * Math.pow(10, s)) / Math.pow(10, s);
}
//一样的只是写法不一样:2*Math.pow(10, 2) 等同于2e2