首页 > 编程语言 >程序是怎样跑起来第三章小数运算出错原因

程序是怎样跑起来第三章小数运算出错原因

时间:2024-02-21 21:56:25浏览次数:23  
标签:运算 第三章 计算机 0.1 浮点数 二进制 出错 小数

大家可能会认为“万能的计算机是不会出现计算错误的”。但实际上,依然存在程序运行后无法得到正确数值的情况。其中,小数运算就是一个典型的例子。在本章中我们首先了解了将二进制表示的小数转换成十进制的方法,这样便于理解计算机运算出错的原因,计算机之所以会出现运算错误,是因为“有一些十进制数的小数无法转换成二进制数”。例如,十进制数0.1,就无法用二进制数正确表示,小数点后面即使有几百位也无法表示。在计算机进行小数运算时无法正确表示的数值,最后都变成了近似值。计算机这个功能有限的机器设备,是无法处理无限循环的小数的。因此,在遇到循环小数时,计算机就会根据变量数据类型所对应的长度将数值从中间截断或者四舍五人。我们知道,将0.3333...这样的循环小数从中间截断会变成0.333333,这时它的3倍是无法得出1的(结果是0.999999),计算机运算错的原因也是同样的道理。很多编程语言中都提供了两种表示小数的数据类型,分别是双精度浮点数和单精度浮点数。双精度浮点数类型用64位、单精度浮点数类型用 32位来表示全体小数。在C语言中,双精度浮点数类型和单精度浮点数类型分别用 double 和float来表示。不过,这些数据类型都采用浮点数来表示小数。浮点数是指用符号、尾数、基数和指数这四部分来表示的小数。因为计算机内部使用的是二进制数,所以基数自然就是2。因此,实际的数据中往往不考虑基数,只用符号、尾数、指数这三部分即可表示浮点数。也就是说,64位(双精度浮点数)和 32位(单精度浮点数)的数据,会被分为三分来使用。那么我们如何避免计算机在计算小数时出现错误呢?1根据程序目的不同,无视错误2把小数转化成整数计算,采用BCD方法。比如0.1这个数,计算机是用一种二进制格式存储小数的,这个二进制格式不能精确表示0.1,它只能表示一个非常接近0.1但又不等于0.1的一个数。

标签:运算,第三章,计算机,0.1,浮点数,二进制,出错,小数
From: https://www.cnblogs.com/zzz2/p/18026281

相关文章

  • 《程序是怎样跑起来的》第三章
    关于这第三章,我已经在这里卡了将近两个礼拜,依旧觉得晦涩难懂,迫于时间压力和剩余的海量任务只能草草总结一下。关于我在这第三章的收获,可以说是少的可怜,其中主要介绍了计算机是如何使用二进制表示小数,计算机在计算小数出错的原因,何为浮点数,如何避免计算机出错以及简略提到的正则表......
  • 《系统科学方法概论》第三章
    第三章主要讲解了系统科学的基本理论和方法,特别是对系统工程做了深入介绍。系统工程是一种运用系统科学原理解决复杂工程问题的方法,起源于20世纪中叶的美国军方导弹项目,并在NASA推动下应用于航天领域,后来逐渐扩展至民用各个行业。霍尔三维结构法是系统工程中的一个关键工具,强调通......
  • 《程序是怎么跑起来的》第三章读后感
    在阅读了《程序是怎么跑起来的》的第三章后,我对计算机的内部结构和程序的运行原理有了更深入的了解。这一章主要介绍了CPU的内部结构、数据的表示方式以及汇编语言和硬件控制方法等内容,让我对计算机的工作原理有了更清晰的认识。首先,作者详细讲解了CPU的内部结构,包括寄存器、程序......
  • 第三章 计算机在计算小数时会出错的原因
    我们习惯性认为计算机在计算是不会出错,可事实并非如此。本章节第1节举出了一个例子“将0.1累加100次的结果不是10”。C语言程序结果得出10.000002。但出现这种去看并不是计算机故障或者程序编写错误的原因。想了解为什么出现错误,就要做到计算机是如何处理小数的。第2节告诉我们如......
  • 《系统科学方法概论》第三章
    在这一章中,常绍舜介绍了系统科学的基本理论与方法。他首先介绍了系统论的基本原理,如系统辨识、系统建模、系统分析等。然后,作者详细阐述了系统科学的基本方法,如系统仿真、系统优化、系统控制等。他指出,系统科学的基本方法能够帮助我们分析和解决复杂问题,优化系统的性能,并实现系统......
  • 《程序是怎样跑起来的》第三章读后感
    《程序是怎样跑起来的》第三章的内容是关于计算机进行小数运算时出错的原因。计算机运算出错的原因是有一些十进制的小数无法转换成二进制数。例如,十进制数0.1,就无法用二进制数正确表示,小数点后面即使有几百位也无法表示。什么是浮点数呢?很多编程语言中都提供了两种表示小数的数......
  • 系统科学方法概论第三章读后感
    信息方法是一种研究方法,它运用信息的概念,将系统的运动过程看作是信息的传递和转换过程。这种方法完全撇开系统的具体运动形式,而是关注系统如何通过获取、传递、运用和存储信息来实现其目的。信息方法的特点是以信息为基础,从信息的整个流程进行综合考察,以获得对系统的整体性认识。......
  • Sunnyui画曲线溢出错误
    之前用sunnyui做展示数据库数据曲线的时候、偶然会报溢出错误,也不报错错误在哪,就是直接程序都跑不动了。后面发现设置曲线上下限的时候,当上下限一样的时候就会导致溢出错误、sunnyui的曲线也没有对其抛出异常对其maxTime和minTime进行数据处理就能解决这个问题了曲线就可以......
  • 第三章读后感
    在阅读了《程序是怎样跑起来的》第三章后,我对计算机进行小数运算时出错的原因有了新得理解。首先,我了解到计算机在进行小数运算时采用的是二进制表示法。这意味着小数点后的位数是无限的,而在实际存储和计算中,计算机只能使用有限的位数来表示小数。这种有限位数的表示方法会导致一......
  • 《程序是怎样跑起来的》第三章读后感
    在阅读《程序是怎样跑起来的》第三章之后,我对于计算机程序的运行机制有了更深入的理解。这一章主要介绍了程序的执行过程,包括指令的读取、解释和执行,以及数据在内存中的存储和处理。通过这些内容,我不仅了解到了程序背后的复杂性,也对计算机科学产生了更浓厚的兴趣。首先,我对于程序......