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

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

这些现象的根本原因在于:计算机内部依靠晶体管的高低电平处理数据,只能理解由 0 和 1 组成的二进制。 今天,我们将探讨不同数据类型是如何在二进制架构中存储的,并解释为什么计算机在处理简单的小数运算(如 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/

相关推荐
lee_tianbai3 分钟前
Java SSM 电影票预定系统|完整前后端项目,开箱即用(源码分享)
java·开发语言·数据库
All for pursuit.37 分钟前
【并查集-2】399.除法求值
数据结构·c++·算法·leetcode
迪丽热爱41 分钟前
一、C语言概述与程序结构
c语言·开发语言·算法
HUIBUR科技1 小时前
AI中枢:打破数据孤岛与流程孤岛双重困境
开发语言·ai
鱼宵1 小时前
LangChain4j 结构化输出:让模型吐出 Java 对象,JSON 不再手写解析
java·开发语言·json·langchain4j
w2sfot1 小时前
【JS加密在线】jsjiami.online(让JavaScript 更安全!)
开发语言·javascript·安全
Wang's Blog2 小时前
Java 项目部署之 Docker工具快速入门: Docker 是什么以及它如何解决部署环境问题
java·开发语言·docker
老木避暑研究所2 小时前
从原始数据到洞察:一次完整的避暑房环境数据采集、清洗与可视化分析
java·开发语言
程序喵大人2 小时前
【C++入门】编译链接模型 - 05 ODR 为什么会让重复定义变成工程炸点
开发语言·c++·编译链接·odr