扫码关注官方订阅号
有没有这样的库?网上找了一些代码,感觉还是不靠谱,而且还用到了with语句。math.io上的库太多,找了半天,也没有找到求个靠谱的运算库,主要用在前端不是在node。所以尽量轻量最好。谢谢
numbers.js或者math.js都可以,至少这两个做浮点运算肯定都没问题
Math.add = function(v1, v2) { ///<summary>精确计算加法。语法:Math.add(v1, v2)</summary> ///<param name="v1" type="number">操作数。</param> ///<param name="v2" type="number">操作数。</param> ///<returns type="number">计算结果。</returns> var r1, r2, m; try { r1 = v1.toString().split(".")[1].length; } catch (e) { r1 = 0; } try { r2 = v2.toString().split(".")[1].length; } catch (e) { r2 = 0; } m = Math.pow(10, Math.max(r1, r2)); return (v1 * m + v2 * m) / m; } Number.prototype.add = function(v) { ///<summary>精确计算加法。语法:number1.add(v)</summary> ///<param name="v" type="number">操作数。</param> ///<returns type="number">计算结果。</returns> return Math.add(v, this); } Math.sub = function(v1, v2) { ///<summary>精确计算减法。语法:Math.sub(v1, v2)</summary> ///<param name="v1" type="number">操作数。</param> ///<param name="v2" type="number">操作数。</param> ///<returns type="number">计算结果。</returns> return Math.add(v1, -v2); } Number.prototype.sub = function(v) { ///<summary>精确计算减法。语法:number1.sub(v)</summary> ///<param name="v" type="number">操作数。</param> ///<returns type="number">计算结果。</returns> return Math.sub(this, v); } Math.mul = function(v1, v2) { ///<summary>精确计算乘法。语法:Math.mul(v1, v2)</summary> ///<param name="v1" type="number">操作数。</param> ///<param name="v2" type="number">操作数。</param> ///<returns type="number">计算结果。</returns> var m = 0; var s1 = v1.toString(); var s2 = v2.toString(); try { m += s1.split(".")[1].length; } catch (e) { } try { m += s2.split(".")[1].length; } catch (e) { } return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); } Number.prototype.mul = function(v) { ///<summary>精确计算乘法。语法:number1.mul(v)</summary> ///<param name="v" type="number">操作数。</param> ///<returns type="number">计算结果。</returns> return Math.mul(v, this); } Math.p = function(v1, v2) { ///<summary>精确计算除法。语法:Math.p(v1, v2)</summary> ///<param name="v1" type="number">操作数。</param> ///<param name="v2" type="number">操作数。</param> ///<returns type="number">计算结果。</returns> var t1 = 0; var t2 = 0; var r1, r2; try { t1 = v1.toString().split(".")[1].length; } catch (e) { } try { t2 = v2.toString().split(".")[1].length; } catch (e) { } with (Math) { r1 = Number(v1.toString().replace(".", "")); r2 = Number(v2.toString().replace(".", "")); return (r1 / r2) * pow(10, t2 - t1); } } Number.prototype.p = function(v) { ///<summary>精确计算除法。语法:number1.p(v)</summary> ///<param name="v" type="number">操作数。</param> ///<returns type="number">计算结果。</returns> return Math.p(this, v); }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
numbers.js或者math.js都可以,至少这两个做浮点运算肯定都没问题