欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js加減乘除精確運算方法實例代碼

 更新時間:2021年01月17日 16:30:29   作者:```木頭人```  
這篇文章主要給大家介紹了關(guān)于js加減乘除精確運算方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

因為計算機數(shù)字是浮點型,所以在計算過程中通常得到的并不是一個準(zhǔn)確的數(shù)據(jù),所以在做一些數(shù)組運算的時候比較頭疼,我們這里就來寫一下精確運算的方法

首先是加法 (這里以兩個數(shù)據(jù)相加為例)

function add(arg1, arg2) {

	 arg1 = arg1.toString(), arg2 = arg2.toString(); // 將傳入的數(shù)據(jù)轉(zhuǎn)化為字符串
  var arg1Arr = arg1.split("."), // 將小數(shù)的數(shù)據(jù)從小數(shù)點的位置拆開
   arg2Arr = arg2.split("."),
   d1 = arg1Arr.length == 2 ? arg1Arr[1] : "", // 獲取第一個數(shù)的小數(shù)點的長度
   d2 = arg2Arr.length == 2 ? arg2Arr[1] : ""; // 獲取第二個數(shù)的小數(shù)點的長度
  var maxLen = Math.max(d1.length, d2.length); // 獲取小數(shù)點長度較大的值
  var m = Math.pow(10, maxLen); // 這里表示10的小數(shù)點長度次方 也就是說如果小數(shù)點長度為2 m的值就是100 如果小數(shù)點長度是3 m的值就是1000如果不懂請自行查找api
  var result = Number(((arg1 * m + arg2 * m) / m).toFixed(maxLen)); // 將小數(shù)轉(zhuǎn)化為整數(shù)后相加在除掉兩個數(shù)乘過的倍數(shù)然后去小數(shù)點較長的長度的小數(shù)位數(shù)
  var d = arguments[2]; // 第三個參數(shù)用戶可以自行決定是否要傳遞 用來定義要保留的小數(shù)長度
  return typeof d === "number" ? Number((result).toFixed(d)) : result;
}

add(12.123, 12)

然后是減法 (減法其實就是一個數(shù)組加上另一個數(shù)字的負(fù)數(shù)所以和加法邏輯相同)

function sun(arg1, arg2) {
return add(arg1, -arg2)
}

其次是乘法

function mul(arg1, arg2) {
var r1 = arg1.toString(), // 將傳入的數(shù)據(jù)轉(zhuǎn)化為字符串
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); // 獲取兩個數(shù)字的小數(shù)位數(shù)的和
// 乘積的算法就是去掉小數(shù)點做整數(shù)相乘然后除去10的所有小數(shù)位的次方
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)));
    }

總結(jié)

到此這篇關(guān)于js加減乘除精確運算方法的文章就介紹到這了,更多相關(guān)js加減乘除精確運算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序switch組件使用詳解

    微信小程序switch組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序switch組件的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • js實現(xiàn)無限級樹形導(dǎo)航列表效果代碼

    js實現(xiàn)無限級樹形導(dǎo)航列表效果代碼

    這篇文章主要介紹了js實現(xiàn)無限級樹形導(dǎo)航列表效果代碼,通過一個封裝的JS類實現(xiàn)無限樹形導(dǎo)航的效果,非常簡單實用,需要的朋友可以參考下
    2015-09-09
  • JS獲取圖片高度寬度的方法分享

    JS獲取圖片高度寬度的方法分享

    這篇文章主要介紹了JS獲取圖片高度寬度的方法,開始的時候沒能做到兼容chrome,在度娘和眾網(wǎng)友的幫助下,最終完成了完美兼容,這里分享給大家,有需要的小伙伴可以參考下。
    2015-04-04
  • echarts同一頁面中四個圖表切換的js數(shù)據(jù)交互方法示例

    echarts同一頁面中四個圖表切換的js數(shù)據(jù)交互方法示例

    這篇文章主要給大家介紹了關(guān)于echarts同一頁面中四個圖表切換的js數(shù)據(jù)交互的相關(guān)資料,文中給出了完整的示例代碼供大家參考學(xué)習(xí),對大家的學(xué)習(xí)或者工作具有一定的幫助,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • js實現(xiàn)橫向百葉窗效果網(wǎng)頁切換動畫效果的方法

    js實現(xiàn)橫向百葉窗效果網(wǎng)頁切換動畫效果的方法

    這篇文章主要介紹了js實現(xiàn)橫向百葉窗效果網(wǎng)頁切換動畫效果的方法,實例分析了javascript實現(xiàn)百葉窗效果的技巧,需要的朋友可以參考下
    2015-03-03
  • javascript實現(xiàn)漂亮的拖動層,窗口拖拽特效

    javascript實現(xiàn)漂亮的拖動層,窗口拖拽特效

    一個可關(guān)閉、可隨意拖動位置的網(wǎng)頁彈出層代碼,美化的相當(dāng)漂亮,簡潔實用,還可拖動改變大小,通過八個方向改變大小,學(xué)習(xí)這類特效編寫的網(wǎng)頁設(shè)計者可參閱一下
    2015-04-04
  • javascript Array數(shù)組對象的擴展函數(shù)代碼

    javascript Array數(shù)組對象的擴展函數(shù)代碼

    我們經(jīng)常給 String,Function,Array 的原型加上自定義的擴展函數(shù),比如去除字符串空格,數(shù)組排序等
    2010-05-05
  • js return返回多個值,通過對象的屬性訪問方法

    js return返回多個值,通過對象的屬性訪問方法

    下面小編就為大家?guī)硪黄猨s return返回多個值,通過對象的屬性訪問方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Svg.js實例教程及使用手冊詳解(一)

    Svg.js實例教程及使用手冊詳解(一)

    SVG.js是一個輕量級的JavaScript庫,允許你輕松操作SVG和定義動畫。這篇文章主要介紹了Svg.js實例教程及使用手冊詳解(一) 的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • 原生js實現(xiàn)class的添加和刪除簡單代碼

    原生js實現(xiàn)class的添加和刪除簡單代碼

    下面小編就為大家?guī)硪黄鷍s實現(xiàn)class的添加和刪除簡單代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07

最新評論