Number最大范围相关
今天在leetcode上面做题目,有一道数组形式的整数加法运算,本来以为还蛮简单的,想着直接将数组先转化为String类型,然后直接相加就好,
代码如下:
var addToArrayForm = function(A, K) {
let result = A.toString().replace(/,/g,'')
let c = String(+result+K)
let arr = [...c]
return arr
};
结果验证没有通过:addToArrayForm ([1,2,6,3,0,7,1,7,1,9,7,5,6,6,4,4,0,0,6,3] ,516);
开始怎么也没有找到问题在哪里,还觉得自己的逻辑没毛病,后来仔细检查才发现原来Number类型有一个最大范围和最小范围,可以使用性Number.MAX_VALUE , Number.MIN_VALUE属性进行查看,
是正负2的53次方,超出最大范围后精确性就会降低,此时如果需要运算的话可以考虑使用字符串的方式进行,经过后期思考后,
修改过的代码如下:
var addToArrayForm = function(A, K) {
var ik = String(K).split('');
var maxLength = Math.max(A.length,ik.length);
var mow = new Array(maxLength)
for(let i =1;i<maxLength+1;i++) {
let r1 = +A[A.length-i]||0,r2=+ik[ik.length-i]||0
let result = r1+r2+(mow[mow.length-i]||0);
mow[mow.length-i] = result
if (mow[mow.length-i] >= 10){
mow[mow.length-i] = result-10
if(mow.length-i == 0 ){
mow.unshift(1)
}else {
mow[mow.length-i-1] = (mow[mow.length-i-1] || 0)+1
}
}
}
return mow
};
最新文章
- CDN服务技术架构图
- shell脚本实现数据库自动备份和删除备份
- iOS 编译报错
- SQL Server集群服务器的优缺点
- require.js的用法
- 在MVC中要实现Ajax
- SkinSharp用法
- Java API ——Character类
- win 10应用商店下载应用错误码0x80070422
- (转载)Mysql查找如何判断字段是否包含某个字符串
- CI 笔记2,(命令规范等)
- 【翻译】在Ext JS 5种使用ViewControllers
- canvas动画之动态绘出六边形
- php操作mongodb的常用函数
- windows搭建RocketMQ服务
- USB2.0学习笔记连载(十四):USB驱动安装及固件程序的编写
- myeclipse maven工程调试调试
- J2SE 8的Lambda --- functions
- python使用twisted搭建的一个socket服务
- CF280C Game on Tree 期望