小数的精度问题
想象一下我们十进制里的分数 1/3。你想把它写成小数,结果是 0.333333...,它是一个无限循环小数,你永远也写不完。无论你写多少个 3,它都只是一个近似值,永远不等于 1/3。
计算机内存是有限的,它没办法存储无限的小数位。所以,它只能在某个位置进行截断或舍入。这就导致了计算机存储的 0.1,其实并不是精确的 0.1,而是一个非常非常接近它的近似值,比如 0.10000000000000000555...。
这个微小的误差,就是所有问题的 “ 万恶之源 “。