漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?


漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
作者 | 漫话编程
来源 | 漫话编程(ID:mhcoding)
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
为什么当我们使用电脑浏览器计算0.2+0.1的时候 , 解决却是0.30000000000000004 , 而 0.1+0.6 的结果却是 0.7 呢?
这个问题其实一直是一个经典的问题 , 甚至有一个网站的域名就是, 主要就是解释这个问题的 。
在这个网站中 , 列举了各种编程语言中计算 0.2+0.1 的结果 , 摘选几个如下:
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
?
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
可以看到 , 在各种语言中 , 计算 0.2+0.1 的结果都出奇的一致 , 那就是这个神奇的0.30000000000000004 。
其实 , 当我们使用浏览器的控制台(F12)进行计算的时候 , 用到的就是JavaScript语言进行计算的 , 所以 , 前面的现象 , 归根结底其实和具体的编程语言无关 。
【漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?】主要问题还是计算机中到底是如何表示小数以及如何进行小数运算的 。
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图
我们知道 , 计算机只认识0和1 [为什么计算机只认识0和1] , 现实世界中的内容想要通过计算机存储、计算或者展示 , 都需要转换2进制 。 在现实世界中 , 数字主要有整数和小数两种 。
在之前的[为什么计算机用补码存储数据]这篇文章中 , 我们介绍过 , 计算机中表示整数的方式有很多 , 如原码、反码以及补码等 。
整数包括正整数、负整数以及零 。 在计算机中存储的整数则分为有符号数和无符号数 。
对于无符号数 , 采用哪种编码方式都无所谓 , 对于有符号数的编码方式 , 常用的是补码 。
那么 , 一个十进制数字想要获得其二进制的补码 , 需要先通过一定的算法得到他对应的原码 。
漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3?文章插图