您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關利用JavaScript怎么實現加減乘除的精確運算,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
首先是加法 (這里以兩個數據相加為例)
function add(arg1, arg2) { arg1 = arg1.toString(), arg2 = arg2.toString(); // 將傳入的數據轉化為字符串 var arg1Arr = arg1.split("."), // 將小數的數據從小數點的位置拆開 arg2Arr = arg2.split("."), d1 = arg1Arr.length == 2 ? arg1Arr[1] : "", // 獲取第一個數的小數點的長度 d2 = arg2Arr.length == 2 ? arg2Arr[1] : ""; // 獲取第二個數的小數點的長度 var maxLen = Math.max(d1.length, d2.length); // 獲取小數點長度較大的值 var m = Math.pow(10, maxLen); // 這里表示10的小數點長度次方 也就是說如果小數點長度為2 m的值就是100 如果小數點長度是3 m的值就是1000如果不懂請自行查找api var result = Number(((arg1 * m + arg2 * m) / m).toFixed(maxLen)); // 將小數轉化為整數后相加在除掉兩個數乘過的倍數然后去小數點較長的長度的小數位數 var d = arguments[2]; // 第三個參數用戶可以自行決定是否要傳遞 用來定義要保留的小數長度 return typeof d === "number" ? Number((result).toFixed(d)) : result; } add(12.123, 12)
然后是減法 (減法其實就是一個數組加上另一個數字的負數所以和加法邏輯相同)
function sun(arg1, arg2) { return add(arg1, -arg2) }
其次是乘法
function mul(arg1, arg2) { var r1 = arg1.toString(), // 將傳入的數據轉化為字符串 r2 = arg2.toString(), m, resultVal, d = arguments[2]; m = (r1.split(".")[1] ? r1.split(".")[1].length : 0) + (r2.split(".")[1] ? r2.split(".")[1].length : 0); // 獲取兩個數字的小數位數的和 // 乘積的算法就是去掉小數點做整數相乘然后除去10的所有小數位的次方 resultVal = Number(r1.replace(".", "")) * Number(r2.replace(".", "")) / Math.pow(10, m); return typeof d !== "number" ? Number(resultVal) : Number(resultVal.toFixed(parseInt(d))); }
最后是減法 (除法和乘法就是一個相反的過程,不做過多解釋)
function div(arg1, arg2) { var r1 = arg1.toString(), r2 = arg2.toString(), m, resultVal, d = arguments[2]; m = (r2.split(".")[1] ? r2.split(".")[1].length : 0) - (r1.split(".")[1] ? r1.split(".")[1].length : 0); resultVal = Number(r1.replace(".", "")) / Number(r2.replace(".", "")) * Math.pow(10, m); return typeof d !== "number" ? Number(resultVal) : Number(resultVal.toFixed(parseInt(d))); }
關于利用JavaScript怎么實現加減乘除的精確運算就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。