Why Computers Can’t Count Money
TL;DR · AI 摘要
计算机无法精确处理货币计算,因二进制存储导致小数误差,现代金融系统改用整数避免问题。
核心要点
- 计算机使用二进制存储数据,导致无法精确表示十进制小数,如0.1或0.2。
- 金融系统改用整数存储货币值,以确保计算精度。
- 小数误差在大规模交易中可能累积,造成资金漂移,甚至被恶意利用。
结构提纲
按章节快速跳转。
- §引言
计算机在处理货币计算时存在根本性缺陷,导致无法精确表示小数。
计算机使用二进制存储数据,无法精确表示十进制小数,如0.1或0.2。
小数误差在大规模交易中可能累积,造成资金漂移,甚至被恶意利用。
现代金融系统改用整数存储货币值,以确保计算精度。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 计算机无法精确处理货币
- 二进制存储问题
- 无法精确表示十进制小数
- 误差累积影响
- 资金漂移
- 可能被恶意利用
- 金融系统解决方案
- 改用整数存储货币值
金句 / Highlights
值得收藏与分享的关键句。
计算机使用二进制存储数据,导致无法精确表示十进制小数,如0.1或0.2。
小数误差在大规模交易中可能累积,造成资金漂移,甚至被恶意利用。
现代金融系统改用整数存储货币值,以确保计算精度。
为什么计算机无法正确计算金钱
2026年6月26日
/
#video essay
计算机速度非常快,但在计算金钱时却存在一个令人惊讶的基本缺陷。
在我们最新发布的 freeCodeCamp.org 视频《为什么计算机无法正确计算金钱》中,Ania Kubow 深入探讨了一类软件错误的历史,这些错误曾经对主要的金融机构构成挑战,导致账户因微小的四舍五入误差而出现资金增减。
这个问题源于硬件处理信息的方式:因为计算机使用二进制(base-2)而不是人类使用的十进制(base-10)系统来存储数字,所以它们难以精确表示像 0.1 或 0.2 这样的简单小数。相反,机器只能存储这些数字的最接近的近似值。虽然这对大多数应用程序来说似乎微不足道,但当这些微小的差异在数百万笔交易中累积时,会导致财务余额以一种可能被利用的方式来“漂移”,从而偶尔可以凭空产生金钱。
这一技术缺陷迫使整个金融行业重新思考如何在软件中处理货币。如今,现代金融系统完全避免使用浮点数,而是选择以整数形式存储数值,以确保绝对的精度。这个视频探讨了为确保 0.1 加上 0.2 始终等于 0.3 所需的工程转变,从而保护你在线上每笔支付的完整性。
观看视频请访问 freeCodeCamp.org YouTube 频道(观看时长:6分钟)。
我是 freeCodeCamp.org 的教师和开发者,我运营着 freeCodeCamp.org YouTube 频道。
如果这篇文章对你有帮助,请分享它。
免费学习编程。freeCodeCamp 的开源课程已帮助超过 40,000 人成为开发者。立即开始学习
ADVERTISEMENT