JavaScript做大整数加法计算的代码实现
作者:爱吃土豆丝呦
这篇文章主要带大家去了解前端如何做大整数加法计算,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
前言
本文将带大家去了解前端如何做大整数加法计算
安全值
在做大整数计算之前,我们先介绍一下安全值
由于 JavaScript 的 Number
类型使用 IEEE 754 双精度浮点数表示数字由于 JavaScript 的 Number
类型使用 IEEE 754 双精度浮点数表示数字
- 最小安全整数:
-2^53 + 1
,即-(2^53 - 1)
,等于-9007199254740991
- 最大安全整数:
2^53 - 1
,即9007199254740991
也就是说超出这个值的计算,前端直接计算会出现安全问题
所以es6
之后才打造了bigint
用于做大整数的计算
代码实现
- bigint
- 我们当然可以直接使用es6提供的bigint去做大整数的计算
// 定义大整数 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
类型直接混合运算。如果需要,可以将 Number
转换为 BigInt
:
```js const num = 10; const bigIntResult = largeNumber1 + BigInt(num); ```
- 不使用
bigint
虽然可以使用bigint
简单明了的解决这个问题
但是这个时候你就会听到面试官说:“我就要你不用bigint
给我做出来”
这个时候你就可以和面试官说:“你是不是S。。。啊不,我当然可以做出来的呀,我这就给您写出来代码呀,请稍等呀,面试官大人”
function add(num1, num2){ let result = ""; let carry = 0 let i = num1.length - 1 let j = num2.length - 1 while(i >= 0 || j >= 0 ){ // 获取当前位的数字 let digit1 = parseInt(num1[i]) let digit2 = parseInt(num2[j]) // 拿到当前位的结果 let sum = digit1 + digit2 + carry let currentDigit = sum % 10 result = currentDigit + result // 计算进位 carry = Math.floor(sum / 10) i-- j-- } // 返回字符串结果 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 ){ // 获取当前位的数字 let digit1 = parseInt(num1[i]) let digit2 = parseInt(num2[j]) // 拿到当前位的结果 let sum = digit1 + digit2 + carry let currentDigit = sum % 10 result = currentDigit + result // 计算进位 carry = Math.floor(sum / 10) i-- j-- } // 返回字符串结果 return result } const num1 = "111111111111111111111111111111"; const num2 = "111121111211112111121111211112"; const sum = add(num1, num2); console.log("Sum: ", sum);
可以看到结果也是没得问题的
到此这篇关于JavaScript做大整数加法计算的代码实现的文章就介绍到这了,更多相关JavaScript大整数加法计算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!