Floating Point Math

Floating Point Math

理解 0.1 + 0.2 为何不等于 0.3页面从十进制和二进制的质因数差异出发,解释计算机表示小数时产生的舍入误差,并展示多种编程语言执行 .1 + .2 后的代码与结果。

Floating Point Math 页面快照
2 和 5
十进制基数的质因数
10
APL 默认打印的有效数字位数
128 位
C# Decimal 类型支持的数值位宽
核心内容

从原理到语言实例理解浮点运算

围绕浮点数的二进制表示展开说明,并按编程语言整理代码、输出结果及部分精确数值处理方式。

解释二进制浮点表示

说明计算机以二进制表示小数,以及 0.1 和 0.2 在二进制中会成为循环小数的原因。

查看多种语言代码示例

按 ABAP、APL、Ada、C、C#、C++、Java、JavaScript、Python 等语言展示 .1 + .2 的代码和输出。

对比实际计算结果

展示不同精度、数据类型和输出格式下的结果差异,包括 0.30000000000000004、0.3 及其他浮点误差表现。

了解精确数值处理方式

介绍 C# Decimal、Java BigDecimal、分数、Rational 和任意精度数值等避免或处理浮点误差的方式。

参考资料

延伸阅读与标准文档

提供浮点数概念、IEEE 754 标准、社区讨论及经典技术文章等公开资料入口。

Floating Point Math

从这里开始使用Floating Point Math。