当前位置: 首页 > news >正文

9.手写JavaScript大数相加问题

一、核心思想

找到两个字符串中最长的长度,对两个字符串在头位置补0达到相等的长度,相加时注意进位和类型转换,特别考虑当相加到第一位是如果仍然有进位不要忽略。此外,js中允许使用的最大的数字为

console.log("最大数",Number.MAX_SAFE_INTEGER)
//最大数 9007199254740991 位数为16

二、代码实现

/*** 大数相加 * @param {String} a 第一位大数* @param {String} b 第一位大数* @return {String} str 返回大数相加结果 */
function sum(a,b){
let str = ""
let length = Math.max(a.length,b.length)
a = a.padStart(length,"0")
b = b.padStart(length,"0")
let carry = 0
let result 
for (let i = length - 1; i >= 0; i--) {let n = +a[i] + + b[i] + carryresult = n % 10 carry = Math.floor(n/10)str = result + str  
}
if (carry) {str = 1 + str
}
return str
}
console.log(sum("2342341234124123","7856564389786944"))
//10198905623911067

PS:

其实日常我们可以直接使用BigInt计算大数,但是在面试中肯定会禁掉,所以还是要学习使用字符串处理大数相加问题。

下面补充使用Bigint计算大数相加

如果在一个Number类型的变量后面追加字母n则表示Bigint

let a = 2342341234124123n
let b = 7856564389786944n
let sum1 = String(a+b)
console.log("a+b",sum1)
//a+b 10198905623911067

我们可以发现,结果与使用字符串相加是相等的

http://www.lryc.cn/news/336130.html

相关文章:

  • FPGA开源项目分享——基于 DE1-SOC 的 String Art 实现
  • 通过 CLI 和引入的方式使用 React:基础入门
  • 第三资本:铸就辉煌非凡的资历
  • 基于激光雷达的袋装水泥智能装车系统有哪些优势?
  • 实战自动化修改主机名
  • 无人机GB42590接收端 +接收端,同时支持2.4G与5.8G双频WIFI模组
  • PVE系统的安装
  • 一辆汽车的节拍时间是怎样的?
  • 数据结构-合并两个有效数组
  • 华为2024年校招实习硬件-结构工程师机试题(四套)
  • 使用Pandas解决问题:对比两列数据取最大值的五种方法
  • rk3588 安卓13 应用安装黑名单的接口
  • Grafana数据库为MySQL
  • 【计算机考研】数据结构都不会,没有思路,怎么办?
  • word文档显示异常,mac安装word字体:仿宋gb2312
  • 【运维】Ubuntu 配置DNS服务器
  • 头歌-机器学习实验 第8次实验 决策树
  • Spring和Spring MVC和MyBatis面试题
  • 用vue3写一个AI聊天室
  • photomaker:customizing realistic human photos via stacked id embedding
  • FFmpeg - 如何在Linux上安装支持CUDA的FFmpeg
  • 新火种AI|商汤发布下棋机器人元萝卜,率先深入家庭场景。
  • CSS实现三栏自适应布局(两边固定,中间自适应)
  • MoCo 算法阅读记录
  • 华为OD机试 - 数组连续和 - 滑动窗口(Java 2024 C卷 100分)
  • 微店micro获得微店micro商品详情,API接口封装系列
  • C语言中的数据结构--链表的应用1(2)
  • .Net6 使用Autofac进行依赖注入
  • 第十二届蓝桥杯省赛真题(C/C++大学B组)
  • DC40V降压恒压芯片H4120 40V转5V 3A 40V降压12V 车充降压恒压控制器