您现在的位置是:首页 > 文章详情

JS ES6 加减乘除法小数浮点数计算BUG解决

日期:2018-09-04点击:807

2018年3月6日

JS ES6 加减乘除法小数浮点数计算BUG解决

//检测是否为数字 let num = (a) => { if(a != null && a.toString() != "") { let r = /^-?(0|[1-9]+\d*|[1-9]+\d*\.\d+|0\.\d+)$/; if(r.test(a.toString())) { return true; } } return false; } //加法 let plus = (a, b) => { if(!num(a) || !num(b)) { return null; } let c, d, m; try { c = a.toString().split(".")[1].length; } catch(e) { c = 0; } try { d = b.toString().split(".")[1].length; } catch(e) { d = 0; } m = Math.pow(10, Math.max(c, d)); return(a * m + b * m) / m; } //减法 let minus = (a, b) => { if(!num(a) || !num(b)) { return null; } let c, d, m, n; try { c = a.toString().split(".")[1].length; } catch(e) { c = 0; } try { d = b.toString().split(".")[1].length; } catch(e) { d = 0; } m = Math.pow(10, Math.max(c, d)); return(a * m - b * m) / m; // n = (c >= d) ? c : d; // return((a * m - b * m) / m).toFixed(n);//数字转换字符串,保留n位小数 } //乘法 let multiply = (a, b) => { let m = 0, c = a.toString(), d = b.toString(); try { m += c.split(".")[1].length } catch(e) {} try { m += d.split(".")[1].length } catch(e) {} return Number(c.replace(".", "")) * Number(d.replace(".", "")) / Math.pow(10, m) } //除法 let division = (a, b) => { if(!num(a) || !num(b)) { return null; } let c, d, f, g; try { c = a.toString().split(".")[1].length; } catch(e) { c = 0; } try { d = b.toString().split(".")[1].length; } catch(e) { d = 0; } with(Math) { f = Number(a.toString().replace(".", "")); g = Number(b.toString().replace(".", "")); return(f / g) * pow(10, d - c); } }
原文链接:https://yq.aliyun.com/articles/635289
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章