如何计算超出精度数字的加减运算

简介:

今天给大家分享的是:如何计算超出精度数字的加减运算,希望大家看完能有所收获哦~




使用javascript计算如下的结果:

63298532574392574384 + 1 = ?

结果:63298532574392570000

为什么会出现这种情况呢?不应该是63298532574392574385吗?这引发了我的思考

这段数字超出了Number数据类型的精度,那么该如何解决这个问题呢?

如果你想学习前端可以来这个Q群,首先是291,中间是851,最后是189,里面可以学习和交流,也有资料可以下载。

一、字符串处理方式

直接处理肯定是不行了,js不能存这么长的数字,如果必须存起来的话,回想js的基本类型也只有字符串了。这样的话就是把number类型转化成字符串类型使用 toString() 方法,然后把字符串分割成两部分,然后用后面的一段转化成number类型去加1,最后再转换成字符串和第一段自负串链接起来。虽然说能解决这个问题,但是存在几个问题:


1、在何处截取字符串?

2、如果截取字符串的地方存在进位怎么办?

这都是有可能存在的,显然不能推广使用。


二、转化成数组处理

我相信你看到标题就应该能想到,基于第一段的处理方式把字符串截成两节,如果是很长呢?这样截取显然不行,那只能回到最初的,把字符串的每个字母都截取存放在一个数组中。使用最后一个数字去加一但是这里要考虑到进位操作。直接上代码:

 

var arr = num.split(''); function calculate(arr){    var last;    
   if (arr.length == 0) {        
       last = 0;    }else{        
       last = arr.pop();    }    

    if (last == 9) {        
       last = 0;        arr = calculate(arr);    }else{        
       last = last - 0 + 1; //转化成数字    }    arr.push(last);    
   return arr; }

相关文章
|
17天前
|
JavaScript 前端开发 大数据
数字太大了,计算加法、减法会报错,结果不正确?怎么办?用JavaScript实现大数据(超过20位的数字)相加减运算。
数字太大了,计算加法、减法会报错,结果不正确?怎么办?用JavaScript实现大数据(超过20位的数字)相加减运算。
|
1月前
|
语音技术 Python
量化模型是将浮点数运算转换为整数运算的过程
【2月更文挑战第32天】量化模型是将浮点数运算转换为整数运算的过程
16 1
|
4月前
|
存储 算法 Java
数值问题
数值问题
57 1
|
7月前
不用任何比较运算符找出两个整数中的较大的值
不用任何比较运算符找出两个整数中的较大的值
54 0
|
11月前
|
C++
C++ 计算斐波那契数列第100万项的精确整数值
C++ 计算斐波那契数列第100万项的精确整数值
71 0
05:计算分数的浮点数值
05:计算分数的浮点数值
150 0
|
开发者 索引 Python
数值运算
快速学习数值运算
69 0
数值运算
|
开发者 索引 Python
数值运算|学习笔记
快速学习数值运算
66 0