【信奥业余科普】C++ 的奇妙之旅 | 13:为什么 0.1+0.2≠0.3?——解密“爆int”溢出与浮点数精度的底层原理

在第 11 篇文章中,我们提到 intdouble 等数据类型本质上是向系统申请固定大小的内存空间。在第 12 篇文章中,我们看到整数除法(如 5 / 2)会舍弃小数部分,仅保留整数 2

这些现象的根本原因在于:计算机内部依靠晶体管的高低电平处理数据,只能理解由 01 组成的二进制。 今天,我们将探讨不同数据类型是如何在二进制架构中存储的,并解释为什么计算机在处理简单的小数运算(如 0.1 + 0.2)时会出现精度偏差。

写在前面的话:这是一系列专为对信奥(信息学奥赛)感兴趣的中小学生及家长朋友们准备的科普文章。笔者受自身学识所限,文中若存在不严谨之处,还望各位读者指正。

本系列文章往期回顾:

第二部分 【C++的奇妙之旅】


一、 二进制整数的存储与极限

我们声明变量 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/

相关推荐
AAIshangyanxiu2 小时前
涡度通量碳观测数据 MATLAB 全流程解析与敏感性定量分析、观测数据质控、插补及 footprint 建模技术
开发语言·matlab·涡度通量·生态碳汇·生态碳汇模拟
小短腿乄2 小时前
java实现pdf加水印+签名
java·开发语言·pdf
郝学胜-神的一滴2 小时前
中级OpenGL教程 030:gl_FragCoord解锁区域渲染与深度可视化新姿势
c++·unity·游戏引擎·图形渲染·unreal engine·opengl
聆风吟º2 小时前
【金仓数据库征文】Java 应用接入金仓数据库:从驱动、连接池到存储过程调试的踩坑实录
java·开发语言·数据库
不会代码的小猴3 小时前
11. 类和动态内存分配
开发语言·c++
似璟如你3 小时前
Java 开发者的 Go 语法基础:从 0 开始快速上手 Go
java·开发语言·后端·golang·go·编程语言
鱼子星_3 小时前
【C++】stack和queue的应用及其模拟实现:适配器与容器适配器
数据结构·c++·笔记·stl
LccKyI4 小时前
C#学习day05(开发福彩双色球系统附思维导图)
开发语言·学习·c#
zzz_23684 小时前
TencentDB-Agent-Memory 深度解析:让多个 Agent 共享项目经验的记忆中枢
java·开发语言·jvm·人工智能·agent·memory·tencent db
jufeng13074 小时前
【系列:MiniKV 原理剖析 · 第 2 篇】
linux·c++·软件工程