JavaScript 大数相加
题目描述
如何实现两个非常大的数字(已经超出了 Number 范围)的加法运算。注意由于这两个已经超过了 Number 范围,因此不能用 Number 存,这里我们选择使用字符串存储。
思路
我们只要将两个数字前面补0至相同的长度,然后从低位到高位进行相加, 同时用一个变量记录进位的信息即可。
参考代码
function bigNumberSum(a, b) {
// 123456789
// 000009876
// padding
let cur = 0;
while (cur < a.length || cur < b.length) {
if (!a[cur]) {
a = "0" + a;
} else if (!b[cur]) {
b = "0" + b;
}
cur++;
}
let carried = 0;
const res = [];
for (let i = a.length - 1; i > -1; i--) {
const sum = carried + +a[i] + +b[i];
if (sum > 9) {
carried = 1;
} else {
carried = 0;
}
res[i] = sum % 10;
}
if (carried === 1) {
res.unshift(1);
}
return res.join("");
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 大前端模拟面试题
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论