最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實現(xiàn)高精度加減乘除模板的示例代碼

 更新時間:2023年10月26日 08:44:42   作者:晨出  
這篇文章給大家介紹了如何使用js實現(xiàn)高精度加減乘除模板,文章通過代碼示例介紹的非常詳細,對大家的學習或工作有一定的幫助,感興趣的小伙伴可以自己動手嘗試一下

高精度加法

我們一起來模擬一下小學的時候我們怎么算加法的,如 298 + 67

  • 先個位相加:8 + 7 = 15,個位結(jié)果是5,十位進位為1
  • 再十位相加:9 + 6 = 15, 十位得到5,再加上個位的進位,得到結(jié)果是6,向百位進位為1
  • 最后百位相加:2 + 1(進位)= 3

得到答案是365

代碼

大整數(shù)相加一般會超過我們存儲的最大位數(shù),所以我們一般用字符串來存儲。

我們每次都是從個位開始計算,所以采用倒序遍歷的方式

function add(a , b) {
 ? ?let res = "";
 ? ?// 用tmp來表示進位信息
 ? ?let tmp = 0;
 ? ?for(let i = a.length - 1, j = b.length - 1; i >= 0|| j >= 0; i--,j--) {
 ? ? ? ?if (i >= 0) tmp += a[i] - '0';
 ? ? ? ?if (j >= 0) tmp += b[j] - '0';
 ? ? ? ?// 結(jié)果
 ? ? ? ?res += tmp % 10;
 ? ? ? ?// 得到進位,下一次循環(huán)中,會直接加上上次的進位數(shù)
 ? ? ? ?tmp = Math.floor(tmp / 10);
 ?  }
 ? ?if(tmp) res += tmp;
 ? ?return res.split('').reverse().join('');
}
?
let res = add("298 ","67");
console.log(res)

高精度減法

模擬一下減法運算,如 171 - 29

  • 先個位相減:1 - 9 需要向十位借位得11 - 9 = 2
  • 十位相減:7 - 1(借位) - 2 = 4
  • 百位 1 - 0 = 1

答案是142

代碼

function sub(a, b) {
 ? ?let t = 0;
 ? ?let res = "";
 ? ?for(let i = a.length - 1, j = b.length - 1; i >= 0|| j >= 0; i--,j--) {
 ? ? ? ?// 先減去上一次的借位,t初始化為0
 ? ? ? ?if(i >= 0) t = +a[i] - t;
 ? ? ? ?if(j >= 0) t -= +b[j];
 ? ? ? ?// 如果是負數(shù)就借位再取余
 ? ? ? ?res += (t + 10) % 10;
 ? ? ? ?
 ? ? ? ?// t < 0 表示有借位
 ? ? ? ?if(t < 0) t = 1;
 ? ? ? ?else t = 0;
 ?  }
 ? ?// 去除前導(dǎo)0,如69-69,只保留最后一個0即可
 ? ?while(res[res.length - 1] === '0' && res.length > 1) res = res.slice(0,res.length - 1);
 ? ?return res.split('').reverse().join('');
}
?
console.log(sub("5432117","2119"))

高精度乘法

注意:我們這里的高精度乘法,指的是一個高精度的數(shù)a和低精度的數(shù)b相乘,所以我們使用字符串存儲a,b是一般的數(shù)字類型

如:78*66 我們可以將66看成一個整體,如果對66看出一個整體不太理解的,可以模擬計算一下 78 * 6

  • 8*6 = 48 個位為 48 % 10 = 8,進位為48 / 10 = 4
  • 7*6 = 42 個位為42 % 10 = 2 + 上次的進位4 = 6,并進位42 / 10 = 4
  • 答案為468

將b看出一個整體,計算方法其實是一樣的

代碼

function mul(a, b) {
 ? ?let t = 0;
 ? ?let res = "";
 ? ?for(let i = a.length - 1; i >= 0; i--) {
 ? ? ? ?// 加上上一次的進位,初始化t = 0
 ? ? ? ?t += +a[i]*b;
 ? ? ? ?res += t % 10;
 ? ? ? ?// 保留進位
 ? ? ? ?t = Math.floor(t / 10);
 ?  }
 ? ?if(t) res += t;
 ? ?// 去除前導(dǎo)0
 ? ?while(res[res.length - 1] === '0' && res.length > 1) res = res.slice(0, res.length - 1)
 ? ?return res.split('').reverse().join('');
}
?
console.log(mul('88',66))

高精度除法

和高精度乘法同理,也是一個高精度的數(shù)a和低精度的數(shù)b相除

代碼

function div(a,b) {
 ? ?const num = [];
 ? ?for(let i = a.length - 1; i >= 0; i--) {
 ? ? ? ?num.push(a[i] - '0');
 ?  }
 ? ?let t = 0;
 ? ?let res = "";
 ? ?for(let i = num.length - 1; i >= 0; i--) {
 ? ? ? ?t = t*10 +num[i]
 ? ? ? ?res += Math.floor( t / b );
 ? ? ? ?t %= b;
 ?  }
 ? ?while(res.length > 1 && res[0] === '0') res = res.slice(1,res.length)
 ? ?return [res,t];
}
?
console.log(div('7',2))

到此這篇關(guān)于js實現(xiàn)高精度加減乘除模板的示例代碼的文章就介紹到這了,更多相關(guān)js實現(xiàn)高精度加減乘除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • 一個簡單的彈性返回頂部JS代碼實現(xiàn)介紹

    一個簡單的彈性返回頂部JS代碼實現(xiàn)介紹

    頁面滾動條處于低端,點擊回到頂部,并且隱藏掉,具體實現(xiàn)代碼如下,感興趣的朋友可以參考下哈
    2013-06-06
  • JavaScript使用canvas繪制坐標和線

    JavaScript使用canvas繪制坐標和線

    這篇文章主要為大家詳細介紹了JavaScript使用canvas繪制坐標和線,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • JS event使用方法詳解

    JS event使用方法詳解

    event代表事件的狀態(tài),例如觸發(fā)event對象的元素、鼠標的位置及狀態(tài)、按下的鍵等等。 event對象只在事件發(fā)生的過程中才有效。
    2008-04-04
  • 微信小程序后端無法保持session的原因及解決辦法問題

    微信小程序后端無法保持session的原因及解決辦法問題

    這篇文章主要介紹了微信小程序后端無法保持session的原因及解決辦法問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • 微信小程序之console.log()使用方法

    微信小程序之console.log()使用方法

    console.log()?是 JavaScript 中的標準內(nèi)置函數(shù),主要用于在瀏覽器的控制臺(Console)中輸出信息,幫助開發(fā)者進行調(diào)試和跟蹤代碼運行狀態(tài),下面給大家介紹微信小程序之console.log()使用,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • JS小功能(offsetLeft實現(xiàn)圖片滾動效果)實例代碼

    JS小功能(offsetLeft實現(xiàn)圖片滾動效果)實例代碼

    這篇文章主要介紹了offsetLeft實現(xiàn)圖片滾動效果實例代碼,有需要的朋友可以參考一下
    2013-11-11
  • JavaScript性能優(yōu)化之提升頁面加載速度的七個技巧

    JavaScript性能優(yōu)化之提升頁面加載速度的七個技巧

    在現(xiàn)代Web開發(fā)中,性能優(yōu)化是一個永恒的話題,隨著用戶對頁面加載速度的要求越來越高,JavaScript的性能優(yōu)化顯得尤為重要,最近,我在一個大型電商項目中通過實施7個關(guān)鍵的JavaScript優(yōu)化技巧,成功將頁面加載速度提升了65%,本文將詳細分享這些實戰(zhàn)經(jīng)驗
    2025-11-11
  • 如何實現(xiàn)js拖拽效果及原理解析

    如何實現(xiàn)js拖拽效果及原理解析

    這篇文章主要介紹了如何實現(xiàn)js拖拽效果及原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • JS 刪除字符串最后一個字符的實現(xiàn)代碼

    JS 刪除字符串最后一個字符的實現(xiàn)代碼

    本篇文章主要是對JS刪除字符串最后一個字符的實現(xiàn)代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02
  • TypeScript中Enum類型的具體使用

    TypeScript中Enum類型的具體使用

    在TypeScript 中,枚舉或枚舉類型是具有一組常量值的常量長度的數(shù)據(jù)結(jié)構(gòu),本文主要介紹了TypeScript中Enum類型的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10

最新評論

图片| 黄龙县| 盖州市| 塘沽区| 中卫市| 陆河县| 宣恩县| 峨眉山市| 宜川县| 泊头市| 淮南市| 万山特区| 凤城市| 屯昌县| 新营市| 瑞安市| 神农架林区| 全椒县| 应城市| 阳西县| 巴东县| 淮北市| 龙井市| 恩平市| 利辛县| 托克托县| 西藏| 都兰县| 平罗县| 德昌县| 太湖县| 三都| 深水埗区| 平陆县| 三原县| 汝阳县| 新平| 龙门县| 历史| 商南县| 休宁县|