一、两个大正整数字符串相加

在JavaScript中,数值类型满足不了大数据容量计算,可以用字符串进行操作
 function add(strNum1, strNum2) {
// 将传进来的数字/数字字符串调用toString方法转换成字符串,并进行切割,专成数组
let splitNum1 = strNum1.toString().split(''),
splitNum2 = strNum2.toString().split('') // 判断两个数组的长度,进行值的互换,将splitNum1设置为最长的值,方便后续计算
if (splitNum1.length < splitNum2.length) {
let temp = splitNum1
splitNum1 = splitNum2
splitNum2 = temp
} // carry: 进位值; currentNum: 相加之后,除以10的余数; sum: 相加的值
let len1 = splitNum1.length,
len2 = splitNum2.length,
carry = 0,
currentNum = 0,
sum = 0 // len1递减到1之后,循环体中的len1 - 1 = 0 即可拿到下标为零的数组元素,
// 所以这里条件是 大于 0,下面len2 > 0 同理
while (len1 > 0) {
if (len2 > 0) {
sum = parseInt(splitNum1[len1 - 1]) + parseInt(splitNum2[len2 - 1]) + carry
} else {
sum = parseInt(splitNum1[len1 - 1]) + carry
}
carry = Math.floor(sum / 10) // 进位数值
currentNum = sum % 10 // 取余数,作为当前位置的数值
splitNum1[len1 - 1] = currentNum // 设置当前值 // 相加之后,数值长度都递减
len1--
len2--
}
// 判断是否还有进位
if (carry) {
splitNum1.unshift(1)
}
return splitNum1.join('')
}
let result = add(9527, 2019) console.log('result :', result) // result : 11546

备注:

在做大数相加,突然想到平时使用 数字.toString 方法会报错,
但是作为函数参数传进来,直接调用toString方法却不会报错,
上网搜索了下原因,记录了下来,传送门:Number和toString中的坑

JavaScript中大数相加的解法的更多相关文章

  1. HDU 1047 Integer Inquiry 大数相加 string解法

    本题就是大数相加,题目都不用看了. 只是注意的就是HDU的肯爹输出,好几次presentation error了. 还有个特殊情况,就是会有空数据的输入case. #include <stdio ...

  2. POJ 1503 Integer Inquiry(大数相加)

    一.Description One of the first users of BIT's new supercomputer was Chip Diller. He extended his exp ...

  3. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  4. javascript中的浮点数运算

    解释一下下面代码的输出 console.log(0.1 + 0.2); //0.30000000000000004 console.log(0.1 + 0.2 == 0.3); //false Jav ...

  5. 【原】理解javascript中的闭包

    闭包在javascript来说是比较重要的概念,平时工作中也是用的比较多的一项技术.下来对其进行一个小小的总结 什么是闭包? 官方说法: 闭包是指有权访问另一个函数作用域中的变量的函数.创建闭包的常见 ...

  6. (转)JavaScript中的运算符优先级

    JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低的优先级列出J ...

  7. JavaScript中reduce()方法

    原文  http://aotu.io/notes/2016/04/15/2016-04-14-js-reduce/   JavaScript中reduce()方法不完全指南 reduce() 方法接收 ...

  8. JavaScript中{}+{}

    在 JavaScript 中,加法的规则其实很简单,只有两种情况: 把数字和数字相加 把字符串和字符串相加 所有其他类型的值都会被自动转换成这两种类型的值. 为了能够弄明白这种隐式转换是如何进行的,我 ...

  9. JavaScript中的类型转换(二)

    说明: 本篇主要讨论JavaScript中各运算符对运算数进行的类型转换的影响,本文中所提到的对象类型仅指JavaScript预定义的类型和程序员自己实现的对象,不包括宿主环境定义的特殊对象(比如浏览 ...

随机推荐

  1. MongoDB 在系统数据库local上无法创建用户的解决方法

    我们知道,MongoDB的Oplog (operations log)记录了用户的最近一段时间的操作(时间长短主要受设置的oplogSize和程序的写入更新量的影响).那么,如果其他部门(例如BI团队 ...

  2. sql server 错误日志errorlog

    一 .概述 SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应用程序日志中. 这两种日志都会自动给所有记录事件加上时间戳 ...

  3. 【转载】xilinx 高速收发器Serdes深入研究

    此篇文章深入浅出介绍了关于高速串行收发器的几个重要概念和注意事项,为方便知识点复习总结和后续查阅特此转载,原文标题及链接为:xilinx 高速收发器Serdes深入研究 - CSDN博客   http ...

  4. 对于windows操作系统磁盘访问权限修改的手残教训

    最近公司新配置的win10电脑,由于测试关于windows系统上项目的安装程序时默认使用了c盘安装,发现安装后的项目不是崩溃就是运行没结果的,偶然间发现同一个安装程序在d盘或其他非系统盘安装则正常.很 ...

  5. C#中@的作用

    1.在书写文件路径时,消除"/"的转义功能 string FileDirect = "C:\Text\Debug\Text.txt"; \\编译会报错 stri ...

  6. mybatis 错误

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyR ...

  7. C++笔记-数组指针/二维数组转换指针

    参考资料: 1. 作者 BensonLaur  :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...

  8. Mysql_连接字符串

    1.本地数据库连接 <connectionStrings> <add name="ConnectionString" connectionString=" ...

  9. 程序员如何开始做一个自己的 Side Project?

    此系列文章我们开始聊一些软件开发人员如何开始动手写一些自己项目(Side Project)的思路与方法,以及过程中可能需要准备的知识,并分享一些相关的资源给大家. 1. 什么是 Side Projec ...

  10. js模块化世界

    前言 我们经常见到 一些这样的写法,require('xxx').import xx from '../components/data'.export const data....也听见一些这样的说法 ...