为什么电脑不会计算小数(计算机算不了小数)

学过编程语言的人都知道,所有的编程语言都会有浮点数这种数据类型(不同的编程语言可能叫法不一样,但暂且可以把它理解为日常生活中的小数)。进行浮点数运算的时候,有时会发现计算的结果与正确的结果并不一样,例如,将0.1累加100次的时候,得到的结果并不是刚好是10,而是会存在误差(我得到的结果是10.09999999999998,不同的编程语言会可能会得到不同的结果,但结果都会出现小数,而不是整数10)。为什么计算能力如此强大的电脑也会犯如此低级的错误呢?接下来让我们一起看看电脑是如何处理小数的吧。

首先,电脑是用二进制来表示小数的(例如0.0101),而不是我们常用的十进制(例如0.5093)。那二进制与十进制有什么区别呢?简单来说就是,二进制数就是每一位只能用0和1来表示的数(例如10.11),而十进制数是每一位只能用0~9这十个数来表示的数(例如19.58)(历史上也出现了许多其他的进制,有些现在还在使用,有兴趣的可以去了解相关的进制发明史,还是挺有趣的)。

为什么电脑不会计算小数(计算机算不了小数)

二进制数与十进制数之间,通过对应的运算规则就可以进行相互转换。下面举个例子来说明一下二进制数转换成十进制数(括号后面的数表示这个括号里面的数是多少进制的):

(1011.0011)2 = (11.1875)10

我们先将二进制数每一位都拆出来,从最低位开始,然后一位一位地转换成十进制数,在分别计算的时候把其它位的数都当成0。(2^n表示2的n次方,n为任意数。另外,不知道n为0或负数是如何算出来的,可以看查阅相关的资料或者看我上一篇文章:重新认识数学中的指数)

0.0001 = 1 x 2^(-4) = 1 x 0.0625 = 0.0625

0.001 = 1 x 2^(-3) = 1 x 0.125 = 0.125

0.00 = 0 x 2^(-2) = 0 x 0.25 = 0

0.0 = 0 x 2^(-1) = 0 x 0.5 = 0

1 = 1 x 2^0 = 1 x 1 = 1

10 = 1 x 2^1 = 1 x 2 = 2

000 = 0 x 2^2 = 0 x 4 = 0

1000 = 1 x 2^3 = 1 x 8 = 8

然后将上面的结果全部加起来就等于 11.1875

从上面的计算过程中也可以看出,当二进制数是连续的时候,十进制数数是非连续的。更直观一点,就是二进制数(0.0000)2~(0.1111)2转换成十进制数时只能表示表示为(0.5)10、(0.25)10、(0.125)10、(0.0625)10这4个数的相加组合(每个数只能取0或1次)。这说明了十进制数中有些数是不能用二进制数表示的,例如0.1。或许你会认为,只要二进制数多取一些小数总可以得到吧,但事实是,无论取多少位小数最多也只能转换为近似值(你也可以自己试一下)。

所以,下次写程序要进行浮点数运算时,要特别注意这个问题。一个较好的解决办法是将它转换成整数,然后将得到结果再转换回浮点数。

好了,希望这篇文章能对你们有所帮助,感谢大家的观看。

参考资料:

矢泽久雄.程序是怎样跑起来的.北京:人民邮电出版社,2017

以上内容来源于网络,由“WiFi之家网”整理收藏!

原创文章,作者:电脑教程,如若转载,请注明出处:https://www.224m.com/197076.html

(0)
电脑教程电脑教程
旧光猫换新光猫怎么换(换了光猫怎么重新设置上网)
上一篇 2022年12月5日 08:51
华硕路由器AX3000电竞路由(WiFi6无线技术普及之作)
下一篇 2022年12月5日 09:02

相关推荐

  • Win7 使用Windows Virtual PC虚拟机教程

    原标题:"Win7系统如何使用Windows Virtual PC虚拟机"关于电脑问题教程分享。 - 来源:WiFi之家网 - 编辑:小元。Windows Virtual PC相比其他虚拟机,自然兼容性

    2021年7月11日
    10.9K
  • 设置路由器显示无法上网(路由器设置电视无法上网)

    当您在家中设置路由器时,有时会遇到无法连接到互联网的问题。这个问题可能会让您感到困惑,因为您认为您已经正确地设置了路由器。在本文中,我们将介绍如何解决路由器无法上网的问题。 检查物…

    网络 2023年12月1日
    1.6K
  • 电脑上怎么查看本机的内网IP地址

    我们经常会听说IP地址,每一台电脑想要上网,都需要一个IP地址,你会查询你的IP地址吗?首先大家要知道IP地址分为内网IP和外网IP。现在多数人都会使用路由器,路由器可以看作一个桥梁,连接用户和互联网。路由器直接连接互联网,而用户直接连接路由器。路由器分配给大家的IP地址称为内网IP,又称局域网I

    2021年10月22日
    8.4K
  • 路由器自己能重新设置(如何重新设置自己的路由器)

    路由器自己能重新设置 路由器是一种网络设备,它允许多个设备在一个网络上共享一个互联网连接。当您第一次设置路由器时,您需要登录到路由器的管理界面并进行设置。但是,如果您忘记了登录凭据…

    2023年11月15日
    695
  • 路由器登录如何改密码设置(如何找回路由器密码)

    路由器登录如何改密码设置(如何找回路由器密码) 路由器是我们家庭网络中必不可少的一部分,它能够把网络信号传输到各个设备上,保障我们的网络使用。但是,为了保障网络安全,我们也需要及时…

    2023年11月14日
    1.5K
  • 如何改变路由器的设置方法(睿易路由器设置方法)

    如何改变路由器的设置方法(睿易路由器设置方法) 路由器是连接我们的计算机网络的核心设备,它的设置方法对于网络的稳定性和安全性有着非常重要的作用。下面就为大家介绍睿易路由器的设置方法…

    网络 2024年11月27日
    1.2K
  • 腾达 FH1203 无线路由器设置宽带连接上网指南

    第一步:连接好线路 直接将入户的网线(没有猫的用户)或者猫出来的网线(有猫的用户)接在路由器的WAN口,再找一根短网线,一头接电脑,一头接路由器LAN1/LAN2/LAN3任意接口…

    2022年10月21日
    1.8K
  • TP-link无线路由器设置图文教程

    在我们需要路由器时,wifi经常出现问题,第一反应就是去检查路由器是否有问题,如果有就要进行一些设置。但是如果不会设置的话,就会比较麻烦了,所以对于路由器的一些设置我们需要知道,t…

    TP-LINK(普联) 2020年10月12日
    28.2K
  • 戴尔G7游戏本装win10系统教程 戴尔win10重装系统步骤

    原标题:"戴尔G7游戏本怎么装win10系统教程"关于电脑问题教程分享。 - 来源:WiFi之家网 - 编辑:小元。戴尔G7游戏本装win10系统步骤是怎样的?戴尔G7游戏本是一款15英寸,预装Wind

    2021年7月22日
    11.3K
  • 5gn是什么意思(图文)

    【导读】5gn是什么意思,下面就是WiFi之家网整理的网络知识百科,来看看吧!大家好,我是191路由器网小编,上述问题将由我为大家讲解。联通5gn是指5G的多场景应用和无限可能。 中国联通正式公布了旗下

    2021年7月18日
    23.3K