漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?
文章插图
作者 | 漫话编程
来源 | 漫话编程(ID:mhcoding)
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
为什么当我们使用电脑浏览器计算0.2+0.1的时候 , 解决却是0.30000000000000004 , 而 0.1+0.6 的结果却是 0.7 呢?
这个问题其实一直是一个经典的问题 , 甚至有一个网站的域名就是, 主要就是解释这个问题的 。
在这个网站中 , 列举了各种编程语言中计算 0.2+0.1 的结果 , 摘选几个如下:
文章插图
?
文章插图
可以看到 , 在各种语言中 , 计算 0.2+0.1 的结果都出奇的一致 , 那就是这个神奇的0.30000000000000004 。
其实 , 当我们使用浏览器的控制台(F12)进行计算的时候 , 用到的就是JavaScript语言进行计算的 , 所以 , 前面的现象 , 归根结底其实和具体的编程语言无关 。
【漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?】主要问题还是计算机中到底是如何表示小数以及如何进行小数运算的 。
文章插图
文章插图
我们知道 , 计算机只认识0和1 [为什么计算机只认识0和1] , 现实世界中的内容想要通过计算机存储、计算或者展示 , 都需要转换2进制 。 在现实世界中 , 数字主要有整数和小数两种 。
在之前的[为什么计算机用补码存储数据]这篇文章中 , 我们介绍过 , 计算机中表示整数的方式有很多 , 如原码、反码以及补码等 。
整数包括正整数、负整数以及零 。 在计算机中存储的整数则分为有符号数和无符号数 。
对于无符号数 , 采用哪种编码方式都无所谓 , 对于有符号数的编码方式 , 常用的是补码 。
那么 , 一个十进制数字想要获得其二进制的补码 , 需要先通过一定的算法得到他对应的原码 。
文章插图
- 红米K40渲染图曝光:居中挖孔+后置四摄,这外观你觉得如何?
- 奋斗|该如何看待拼多多员工猝死:鼓励奋斗,也要保护好奋斗者
- 装机点不亮 如何简易排查硬件问题?
- 虾米音乐宣布关停!我的歌单如何导入QQ音乐、网易云音乐?
- 人脸识别设备主板如何选型 软硬整合大幅缩短开发时间
- Mini-LED产品效果究竟如何?
- 专家介绍如何判断智能手机被入侵:运行速度变慢、电池消耗过快以及卡顿
- 最便宜的骁龙888手机?红米K40曝光:这外观如何?
- 广色域还不够 投影如何实现精准色彩还原?
- 10nm进程受阻,芯片狂人梁孟松出走,中芯国际如何突破困境?