#yyds干货盘点#JS两个大数相加

Posted 尼羲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点#JS两个大数相加相关的知识,希望对你有一定的参考价值。

javascript​ 只有一种数字类型,可以使用也可以不使用小数点来书写数字。

在 ​​JavaScript​​ 中,数字不分为整数类型和浮点数类型,所有的数字都是浮点数类型。​​JavaScript​​​ 采用 ​​IEEE754​​​ 标准定义的 64 位浮点格式表示数字,此格式用 64 位存储数值。其中 ​​0~51​​​存储数字片段,​​52~62​​​存储指数,​​63​​ 位存储符号。


实现两个大数相加

思路:大数可能会超出 ​​JavaScript​​ 的数字类型范围,超出后结果损失精度,所以可以用字符串的方式来存储大数。

题解:

let a = "9876543210123456789000000000123";
let b = "1234567898765432100000012345678901";
function add(str1, str2)
// 获取两个数字的最大长度
let maxLength = Math.max(str1.length, str2.length);
// 用0补齐长度,让它们两个长度相同
str1 = str1.padStart(maxLength, 0); // "0009876543210123456789000000000123"
str2 = str2.padStart(maxLength, 0); // "1234567898765432100000012345678901"
let temp = 0; // 每个位置相加之和
let flag = 0; // 进位:相加之和如果大于等于10,则需要进位
let result = "";
for(let i=maxLength-1; i>=0; i--)
// 获取当前位置的相加之和:字符串1 + 字符串2 + 进位数字
temp = parseInt(str1[i]) + parseInt(str2[i]) + flag;
// 获取下一个进位
flag = Math.floor(temp/10);
// 拼接结果字符串
result = temp%10 + result;

if(flag === 1)
// 如果遍历完成后,flag还剩1,说明两数相加之后多了一位,类似于:95 + 10 = 105
result = "1" + result;

return result;

以上是关于#yyds干货盘点#JS两个大数相加的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# LeetCode面试题:两数相加

#yyds干货盘点# LeetCode面试题:两数之和

#yyds干货盘点# LeetCode 热题 HOT 100:四数之和

#yyds干货盘点# 动态规划专题:小红取数

#yyds干货盘点#两个排序数组的中位数,“最”有技术含量的解法

#yyds干货盘点#马拉车算法解最长回文子串!Manacher