js数字计算 误差问题的快速解决方法
程序员文章站
2024-02-10 12:34:46
实例如下:
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确...
实例如下:
//加法函数,用来得到精确的加法结果 //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 //调用:accadd(arg1,arg2) //返回值:arg1加上arg2的精确结果 function add(a,b){ var c, d, e; try { c = a.tostring().split(".")[1].length; } catch (f) { c = 0; } try { d = b.tostring().split(".")[1].length; } catch (f) { d = 0; } return e = math.pow(10, math.max(c, d)), (mul(a, e) + mul(b, e)) / e; } //乘法函数,用来得到精确的乘法结果 //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 //调用:accmul(arg1,arg2) //返回值:arg1乘以arg2的精确结果 function mul(a, b) { var c = 0, d = a.tostring(), e = b.tostring(); try { c += d.split(".")[1].length; } catch (f) {} try { c += e.split(".")[1].length; } catch (f) {} return number(d.replace(".", "")) * number(e.replace(".", "")) / math.pow(10, c); } //减法函数,用来得到精确的减法结果 //说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。 //调用:accsubtr(arg1,arg2) //返回值:arg1减去arg2的精确结果 function sub(a,b){ var c, d, e; try { c = a.tostring().split(".")[1].length; } catch (f) { c = 0; } try { d = b.tostring().split(".")[1].length; } catch (f) { d = 0; } return e = math.pow(10, math.max(c, d)), (mul(a, e) - mul(b, e)) / e; } //除法函数,用来得到精确的除法结果 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。 //调用:accdiv(arg1,arg2) //返回值:arg1除以arg2的精确结果 function div(a, b) { var c, d, e = 0, f = 0; try { e = a.tostring().split(".")[1].length; } catch (g) {} try { f = b.tostring().split(".")[1].length; } catch (g) {} return c = number(a.tostring().replace(".", "")), d = number(b.tostring().replace(".", "")), mul(c / d, math.pow(10, f - e)); }
以上这篇js数字计算 误差问题的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。