freeCodeCamp.org

Why Computers Can’t Count Money

8.5内容质量

TL;DR · AI 摘要

计算机无法精确处理货币计算,因二进制存储导致小数误差,现代金融系统改用整数避免问题。

核心要点

  • 计算机使用二进制存储数据,导致无法精确表示十进制小数,如0.1或0.2。
  • 金融系统改用整数存储货币值,以确保计算精度。
  • 小数误差在大规模交易中可能累积,造成资金漂移,甚至被恶意利用。

结构提纲

按章节快速跳转。

  1. 计算机在处理货币计算时存在根本性缺陷,导致无法精确表示小数。

  2. ·二进制存储问题

    计算机使用二进制存储数据,无法精确表示十进制小数,如0.1或0.2。

  3. 小数误差在大规模交易中可能累积,造成资金漂移,甚至被恶意利用。

  4. 现代金融系统改用整数存储货币值,以确保计算精度。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 计算机无法精确处理货币
    • 二进制存储问题
      • 无法精确表示十进制小数
    • 误差累积影响
      • 资金漂移
      • 可能被恶意利用
    • 金融系统解决方案
      • 改用整数存储货币值

金句 / Highlights

值得收藏与分享的关键句。

#计算机科学#金融系统#二进制#浮点数#软件工程
打开原文

为什么计算机无法正确计算金钱

2026年6月26日

/

#video essay

Beau Carnes

计算机速度非常快,但在计算金钱时却存在一个令人惊讶的基本缺陷。

在我们最新发布的 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