根据
http://0.30000000000000004.com/
你的语言没有被破坏,它在做浮点运算。计算机只能以本机方式存储整数,因此需要某种方法
代表十进制数。这个陈述有一些
不准确程度。这就是为什么,经常是.1+.2!=3。
为什么会这样?其实很简单。当你有一个
基10系统(和我们的系统一样),它只能表示使用
基本要素。10的主因子是2和5。所以1/2,
1/4、1/5、1/8和1/10都可以清楚地表示,因为
分母都使用10的素数。相反,1/3,1/6,和
1/7都是重复小数,因为它们的分母使用素数
系数3或7。在二进制(或基2)中,唯一的素因子是2。
所以你只能把只包含2作为
主要因素。在二进制中,1/2、1/4、1/8都可以清晰地表示
作为小数。而1/5或1/10则是重复小数。所以0.1
和0.2(1/10和1/5),而在基数为10的系统中是干净的小数
在计算机正在运行的BASE2系统中重复小数。
当你在这些重复的小数上做数学运算时
当你转换计算机的基础2时遗留下来的剩菜
(二进制)一个人类可读性更强的基数10的数字。