js浮点数计算加减乘除精度处理

本文探讨了JavaScript中浮点数加减乘除存在的精度问题,并提供了解决方案,即通过将浮点数转换为整数进行计算,再转换回浮点数以确保计算结果的准确性。
摘要由CSDN通过智能技术生成

js浮点数的加减乘除存在着严重的bug

例如:在google浏览器下,0.1+0.2=0.30000000000000004;这不是我们想要的结果。

对于这一问题的解决方案就是重写浮点数的加减乘除方法,其原理是现将浮点数转换为整数。进行加减乘数,再除以相应的倍数,使之成为对应的浮点数结果。

解决方案

//小数乘法
export const floatMul = (a, b) => {
    let m = 0, n = 0,              //记录a,b的小数位数
        d = a + "",                  //字符串化
        e = b + "";
    try {
        m = d.split(".")[1].length;
    } catch (error) {
        console.log(error)
    }
    try {
        n = e.split(".")[1].length;
    } catch (error) {
        console.log(error)
    }
    let maxInt = Math.pow(10, m + n); //将数字转换为整数的最大倍数
    return Number(d.replace(".", "")) * Number(e.replace(".", "")) / maxInt;
}

//小数加法
export const floatAdd = (a, b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值