#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 热题 HOT 100:四数之和