开发者社区> 茶花盛开> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:
+关注继续查看

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




使用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; }

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【LeetCode448】找到所有数组中消失的数字
一定要审题——第一句话:数组元素的值在1~n范围内,并且n为数组的大小,就是说“没出现”的元素虽然不在,但是数组是开够空间给他们。 题目要求不能使用额外空间(用来存结果的ans数组除外)。 若能使用额外空间,那就是常规的使用哈希表。
23 0
基于阿里云快速搭建数字营销引擎【计算广告】
阿里云营销引擎有别于其他阿里云产品,它是配合阿里云MaxComputer,画像分析,分析型数据库等多个云产品,并在高德DMP和友盟+DMP提供人群分析能力的基础上,提供一整套数字营销解决方案。 在过去搭建一套成熟DSP平台需要一个强大的技术和业务团队,现在只需要一个人就能够轻松完成,大幅降低了系统构建的基础设施成本,运维成本,容灾成本,开发成本,时间成本。
2660 0
基础练习 特殊的数字
问题描述   153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。
1071 0
渗透学习笔记--基础篇--sql注入(数字型)
环境:dvwa 1.7数据库:mysql dvwa的安全等级:medium 一、分析和查找注入点 (1)知识点回顾 如果上一篇有好好读过的同学应该知道,我们上一篇遇到的字符型注入。
939 0
+关注
茶花盛开
web前端新手群291851189
217
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载