解决js小数计算精度问题

        直接拿去用,免费的代码,能不能换个免费的赞和关注。

//计算小数
export const amend=(num1, num2, calcStr)=> {
  {
    var str1, 
    str2,
    sum,
    str1Length,
    str2Length,
    beishu = 1;
    // 将数字转换为字符串
    str1 = num1.toString();
    str2 = num2.toString();
      try {str1Length= str1.split('.')[1].length} catch (error) {str1Length=0}
      try {str2Length= str2.split('.')[1].length} catch (error) {str2Length=0}
      var step=Math.pow(10,str1Length+str2Length)
      beishu=step
      // console.log(str1Length,str2Length);
    // 去除数字中的小数点
    str1 = str1.replace('.', '');
    str2 = str2.replace('.', '');
    num1 = parseInt(str1);
    num2 = parseInt(str2);
      // console.log(num1,num2,beishu);
    // 进行最终计算并除相应倍数
    switch (calcStr)
    {
      case "+":
        sum = (num1 + num2) / beishu;
        break;
      case "-":
        sum = (num1 - num2) / beishu;
        break;
      case "*":
        sum = (num1 * num2) / beishu;
        break;
      case "/":
        sum = (num1 / num2)*((Math.pow(10,str2Length)/Math.pow(10,str1Length)));
        /* 除数与被除数同时放大一定倍数,不影响结果,
        所以对数字进行放大对应倍数并进行补0操作后不用另对倍数做处理 */
        break;
      default:
        return "暂不支持的计算类型,现已支持的有加法、减法、乘法、除法";
    }
    
    return sum;
  }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值