目录
- 前言
- 精度丢失
- 原因
- 如何将整数从十进制转换为二进制
- 将小数从十进制转换为二进制
- 解决方案
- 总结
前言
在JavaScript中计算两个十进制数的和,有时候会出现令人惊讶的结果,相信这个大家也都知道了!

精度丢失
例如,我们在计算0.1 + 0.1得到的结果是0.2,但是计算0.1 + 0.2的结果并不是0.3,而是0.30000000000000004
这种现象不仅出现在加法,在减法中也会出现类似的结果。
例如1.2 - 1的结果是0.19999999999999996
不过这并不是JavaScript独有的,其他编程语言也会存在同样的问题。
例如在Python环境下输出。
print(.1 + .2)
得到的结果同样是:0.30000000000000004
原因
这个问题的主要原因是计算机将数据存储为二进制。
如何将整数从十进制转换为二进制
十进制整数可以通过将其除以 2 转换为二进制。取商,并继续除以 2,直到达到零。
每次执行此除法时,请记下余数。现在反转余数列表,得到二进制形式的数字。
举个例子,我想把29转成二进制:
29÷2=14余1
14÷2=7余0
7÷2=3余1
3÷2=1余1
1÷2=0余1
代表十进制 29 的二进制数是11101.
例如:
将小数从十进制转换为二进制
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
举个例子:我想把0.375转成二进制:
0.375*2=0.75 得到0
0.75*2=1.5得到1
0.5*2=1 得到1,小数没了,结束。最终转为二进制是0.011
例如:
- 0.1 也就是0.0001100110011001100110011001100110011001100110011001101
- 0.2 也就是0.001100110011001100110011001100110011001100110011001101
并非每个十进制数都可以用这种二进制格式完美表示,因为有些数字可能转成
JavaScript 在计算时,会先将10进制转为二进制,在进行计算。
0.00011001100110011001100110011001100110011001100110011010 +
0.0011001100110011001100110011001100110011001100110011010 =
0.0100110011001100110011001100110011001100110011001100111
这里得到的结果0.0100110011001100110011001100110011001100110011001100111再转换成十进制就是0.30000000000000004
解决方案
第三方库
Decimal
x = new Decimal(0.1)
y = x.plus(0.2)
bignumber
x = new BigNumber(0.1)
y = x.plus(0.2)
变成整数
主要思想是:将小数先转换成拆分两个字符串,然后计算小数部分的字符串的长度,然后利用这个长度将小数变成整数!
function add(num1, num2) {
const num1Len = (num1.toString().split('.')[1] ).length;
const num2Len = (num2.toString().split('.')[1] ).length;
const maxLen = Math.pow(10, Math.max(num1Len, num2Len));
return (num1 * maxLen + num2 * maxLen) / maxLen;
}
总结
相关推荐:
AI网页设计生成-智能化创造无限可能,ai机甲风背景音乐
seo高手有什么条件,seo难上手吗 ,指南ai写作电力创新
ChatGPT的超链接点不开?解决方法一网打尽!,情感ai写作指令是什么
seo站内优化包括什么营销,seo站内优化操作流程 ,ai 玻璃图标
SEO永远,数字营销的核心力量,广州seo搜索栏内容
SEO是什么意思?揭秘SEO的真正含义与重要性,公司推广网站询问d火18星来
Bing无法使用怎么办?解决方法及替代方案推荐!,ai文字设计教程
SEO动态:2025年SEO趋势与优化技巧解析,十堰外贸网站推广费用
SEO引擎优化方法-让你的网站流量暴增的实战指南,ai智慧树
SEO要点:提升网站排名的核心技巧与策略,福田市网站建设推广费用
优化收费,助力企业提升效益,实现共赢,宜州餐饮网站建设
为什么要做seo si,为什么要做* ,ai里面怎么扣二维码
ChatGPT403:引领人工智能新时代,颠覆你的工作与生活方式,ai nak
seo词库优化,搜索词条优化 ,ai点选择
ChatGPTCanvex打不开?详细分析及解决方法助你顺利使用,ai2.5d网格线去除
好用的AI写作软件,让创作更高效
OpenAI推出的GPT-4Turbo大幅降低了AI应用成本,推动了AI技术的普及化,ai*版
seo软文有什么作用,seo文案是什么 ,斐乐Ai测评问题
在线AI文章:为您打造全新内容创作体验
SEO优化公司一般怎么优化?揭秘专业SEO服务的操作流程,人工智能ai写作软件 哪一个好
seo用什么手法,seo方式 ,ai绘画飞翔
SEO符合:提升网站排名的秘诀,助力企业赢在搜索引擎优化的赛道,优化没续费 网站没了
SEO优化的话题:助力企业成功的关键,夏杰ai智能管家
乘风SEO:突破困境,领航网络营销新时代,武汉靠谱的关键词排名
文章自动生成AI:助力写作新时代,让创作更高效
ChatGPT无法加载?检查您的网络设置并尝试重启,轻松解决连接问题!,ai制作艺术字
SEO快速提升:让你的网站排名瞬间飙升的秘诀,网站建设的发展目标
ChatGPT网站突然不能用了?如何快速解决这个问题,让你重新畅享AI对话!,ai新建多个画板
SEO而且:打造高效网站流量增长的秘密武器,滨江网站推广营销
求一个AI软件,彻底改变你的工作与生活!
SEO怎么设置:让你的网站快速登上搜索引擎首页的秘密,Ai压印分色
AI生成文章免费工具,让创作变得轻松又高效,ai安心健
SEO百度优化:让你的品牌在搜索引擎中脱颖而出,日照网站推广策划
ChatGPT不能打开EL?揭秘这一困扰背后的真相与解决方案,ai被动房
seo需要什么人员,seo需要什么技能 ,画大学ai
ChatGPT故障你从未听过的真相,究竟是什么让它偶尔“失灵”?,ai 图片 矢量
中外链:打通全球流量的桥梁,提升网站排名与流量的双重保障,行业网站建设思路
SEO立刻:快速提升网站排名,带你走在搜索引擎前沿,网站建设怎么推广好做
什么是seo伪原创,seo就业前景伪原创怎么写 ,头像ai画怎么弄
SEO本站:提升网站流量与排名的秘密武器,荆门专业的抖音seo
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
OpenAI注册问题解决方案:如何顺利通过手机号验证,反对ai头像
“新热度”:引领潮流的力量,如何趋势的脉搏,浙江通用网站建设特点
WPJVX:开启数字化未来的智慧平台,关键词排名技术咨询乐云seo
OpenAI银行卡扣款的公司是哪家?揭秘背后的支付流程与安全保障,AI素描相片
seo网赚什么意思,网站seo赚钱 ,ai打不开ai
SEO广告:如何借助SEO提升品牌曝光与销售业绩?,网站推广怎么选择
ChatGPT常见问题汇总:解答你关于AI的一切疑惑,松鼠ai智能教适应教育
为什么选择老域名工具?提升网站SEO与品牌影响力的秘密武器,软文与seo文章区别
SEO门户:打造高效网站流量的关键利器,创意网站建设要求