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

JavaScript做大整數(shù)加法計(jì)算的代碼實(shí)現(xiàn)

 更新時(shí)間:2024年09月05日 08:29:47   作者:愛吃土豆絲呦  
這篇文章主要帶大家去了解前端如何做大整數(shù)加法計(jì)算,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

前言

本文將帶大家去了解前端如何做大整數(shù)加法計(jì)算

安全值

在做大整數(shù)計(jì)算之前,我們先介紹一下安全值

由于 JavaScript 的 Number 類型使用 IEEE 754 雙精度浮點(diǎn)數(shù)表示數(shù)字由于 JavaScript 的 Number 類型使用 IEEE 754 雙精度浮點(diǎn)數(shù)表示數(shù)字

  • 最小安全整數(shù)-2^53 + 1,即 -(2^53 - 1),等于 -9007199254740991
  • 最大安全整數(shù)2^53 - 1,即 9007199254740991

也就是說超出這個(gè)值的計(jì)算,前端直接計(jì)算會(huì)出現(xiàn)安全問題

所以es6之后才打造了bigint用于做大整數(shù)的計(jì)算

代碼實(shí)現(xiàn)

  • bigint
    • 我們當(dāng)然可以直接使用es6提供的bigint去做大整數(shù)的計(jì)算
// 定義大整數(shù)
const largeNumber1 = BigInt("111111111111111111111111111111");
const largeNumber2 = BigInt("222222222222222222222222222222");

// 加法
const sum = largeNumber1 + largeNumber2;
console.log("Sum:", sum.toString()); // 輸出: Sum: 333333333333333333333333333333

// 減法
const difference = largeNumber2 - largeNumber1;
console.log("Difference:", difference.toString()); // 輸出: Difference: 111111111111111111111111111111

// 乘法
const product = largeNumber1 * largeNumber2;
console.log("Product:", product.toString()); // 輸出: Product: 246913580246913580246913580246913580246913580246913580

// 除法
const quotient = largeNumber2 / largeNumber1;
console.log("Quotient:", quotient.toString()); // 輸出: Quotient: 2

// 取余
const remainder = largeNumber2 % largeNumber1;
console.log("Remainder:", remainder.toString()); // 輸出: Remainder: 111111111111111111111111111111

BigInt 不能與普通的 Number 類型直接混合運(yùn)算。如果需要,可以將 Number 轉(zhuǎn)換為 BigInt

```js
const num = 10;
const bigIntResult = largeNumber1 + BigInt(num);
```
  • 不使用bigint

雖然可以使用bigint簡單明了的解決這個(gè)問題

但是這個(gè)時(shí)候你就會(huì)聽到面試官說:“我就要你不用bigint給我做出來”

這個(gè)時(shí)候你就可以和面試官說:“你是不是S。。。啊不,我當(dāng)然可以做出來的呀,我這就給您寫出來代碼呀,請稍等呀,面試官大人”

function add(num1, num2){
    let result = "";
    let carry = 0
    let i = num1.length - 1
    let j = num2.length - 1

    while(i >= 0 || j >= 0 ){
        // 獲取當(dāng)前位的數(shù)字
        let digit1 = parseInt(num1[i])
        let digit2 = parseInt(num2[j])

        // 拿到當(dāng)前位的結(jié)果
        let sum = digit1 + digit2 + carry
        let currentDigit = sum % 10
        result = currentDigit + result

        // 計(jì)算進(jìn)位
        carry = Math.floor(sum / 10)

        i--
        j--
    }

    // 返回字符串結(jié)果
    return result
}function add(num1, num2){
    let result = "";
    let carry = 0
    let i = num1.length - 1
    let j = num2.length - 1

    while(i >= 0 || j >= 0 ){
        // 獲取當(dāng)前位的數(shù)字
        let digit1 = parseInt(num1[i])
        let digit2 = parseInt(num2[j])

        // 拿到當(dāng)前位的結(jié)果
        let sum = digit1 + digit2 + carry
        let currentDigit = sum % 10
        result = currentDigit + result

        // 計(jì)算進(jìn)位
        carry = Math.floor(sum / 10)

        i--
        j--
    }
    // 返回字符串結(jié)果
    return result
}
const num1 = "111111111111111111111111111111";
const num2 = "111121111211112111121111211112";
const sum = add(num1, num2);
console.log("Sum: ", sum);

可以看到結(jié)果也是沒得問題的

到此這篇關(guān)于JavaScript做大整數(shù)加法計(jì)算的代碼實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)JavaScript大整數(shù)加法計(jì)算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

漳州市| 三台县| 瑞丽市| 马公市| 尼玛县| 阿合奇县| 阳高县| 靖宇县| 封开县| 缙云县| 昆山市| 临泽县| 手游| 通榆县| 寿光市| 五家渠市| 孙吴县| 扎赉特旗| 朝阳区| 宜宾县| 泸水县| 红原县| 广安市| 缙云县| 乌兰浩特市| 错那县| 邢台县| 青冈县| 德州市| 长葛市| 彰武县| 敖汉旗| 庆城县| 兴海县| 昌吉市| 南溪县| 孝昌县| 富川| 扶风县| 凌源市| 祁连县|