※
<script> 'use strict' window.onload = () => { Number.prototype.plus = function (param){ return accessPlus(this, param); } Number.prototype.substract = function (param){ return accessSubstract(this, param); } Number.prototype.multiply = function (param){ return accessMultiple(this, param); } Number.prototype.divide = function (param){ return accessDivide(this, param); } /* 無條件捨去到n位,由於內鍵的Math.floor並沒有小數點的部分,所以加這一支 */ Math.floorDecimal = function (value, param){ let temp = Math.pow(10, param); return Math.floor(value * temp)/temp; } // alert(accessDivide(7, 0.35)); // alert(accessSubstract(n1, n2)); // alert(accessMultiple(7, 1.35)); // alert(accessPlus(n1, n2)); let n1 = 7; let n2 = 1.35; alert(n1.plus(n2)); alert(n1.substract(n2)); alert(n1.multiply(n2)); alert(n1.divide(n2)); alert(Math.floorDecimal(2.12345679, 6)); } let utilArithmetic = (p1, p2) => { // 轉字串 let sp1 = p1.toString(); let sp2 = p2.toString(); // 小數點後的數字 let sp1Split = sp1.split(".")[1]; let sp2Split = sp2.split(".")[1]; // 回傳小數點後的數字長度 let len1 = typeof(sp1Split) == 'undefined' ? 0 : sp1Split.length; let len2 = typeof(sp2Split) == 'undefined' ? 0 : sp2Split.length; // 將小數點移除 let np1 = Number(sp1.replace(".", "")); let np2 = Number(sp2.replace(".", "")); return {'len1':len1, 'len2':len2, 'np1':np1, 'np2':np2}; } let accessPlus = (p1, p2) => { let json = utilArithmetic(p1, p2); let pow = Math.pow(10, Math.max(Number(json.len1), Number(json.len2))); return (p1 * pow + p2 * pow) / pow; } let accessSubstract = (p1,p2) => { let json = utilArithmetic(p1, p2); let max = Math.max(Number(json.len1), Number(json.len2)); let pow = Math.pow(10, max); return ((p1 * pow - p2 * pow) / pow).toFixed(max); } let accessMultiple = (p1, p2) => { let json = utilArithmetic(p1, p2); return json.np1 * json.np2 / Math.pow(10, json.len2+json.len1); } let accessDivide = (p1, p2) => { let json = utilArithmetic(p1, p2); return json.np1 / json.np2 * Math.pow(10, json.len2-json.len1); } </script>
※
沒有留言:
張貼留言