【信奥业余科普】C++ 的奇妙之旅 | 13:为什么 0.1+0.2≠0.3?——解密“爆int”溢出与浮点数精度的底层原理
在第 11 篇文章中我们提到int、double等数据类型本质上是向系统申请固定大小的内存空间。在第 12 篇文章中我们看到整数除法如5 / 2会舍弃小数部分仅保留整数2。这些现象的根本原因在于计算机内部依靠晶体管的高低电平处理数据只能理解由0和1组成的二进制。 今天我们将探讨不同数据类型是如何在二进制架构中存储的并解释为什么计算机在处理简单的小数运算如0.1 0.2时会出现精度偏差。写在前面的话这是一系列专为对信奥信息学奥赛感兴趣的中小学生及家长朋友们准备的科普文章。笔者受自身学识所限文中若存在不严谨之处还望各位读者指正。本系列文章往期回顾第一部分【计算机历史】系列文章合集共8篇第二部分 【C的奇妙之旅】【信奥业余科普】C 的奇妙之旅 | 09信奥赛场的核心语言——C 的前世今生【信奥业余科普】C 的奇妙之旅 | 10代码是如何运行的——编译过程与“Hello, World”【信奥业余科普】C 的奇妙之旅 | 11程序的处理核心——变量与常用数据类型【信奥业余科普】C 的奇妙之旅 | 12程序的交互与加工——数据的输入与算术运算一、 二进制整数的存储与极限我们声明变量int a 21;时系统会为其分配4个字节Byte的内存。全文详见https://www.coderli.com/cs-basics-13-data-precision/https://www.coderli.com/cs-basics-13-data-precision/https://www.coderli.com/cs-basics-13-data-precision/
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2550034.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!