【信奥业余科普】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/

相关推荐
爱吃牛肉的大老虎15 小时前
rust基础之环境搭建
java·开发语言·rust
openKylin16 小时前
与全球技术演进同频,openKylin 3.0从C迈向Rust
c语言·开发语言·rust·开源·开放原子·openkylin
疯狂打码的少年16 小时前
【软件工程】结构化设计:模块独立性与耦合内聚
java·开发语言·笔记·软件工程
程高兴17 小时前
PMSM基于在线转动惯量辩识的滑模负载转矩观测器MATLAB-SIMULINK仿真模型
开发语言·matlab
kisloy17 小时前
【python零基础教程第24讲】代码规范与质量管控
开发语言·python
C++、Java和Python的菜鸟17 小时前
第4章 后端Web基础(基础知识)
java·开发语言
芷栀夏17 小时前
Java教育平台实战复盘:课程、考试与学习行为分析系统设计
java·开发语言·学习
从零开始的代码生活_17 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
xywww16818 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws
大彼方..18 小时前
C++ STL Vector 深度剖析:从内存管理到性能优化
开发语言·c++