2025-11-08 06:53:45
浮点数就是用来存小数的数字,比如1.5、3.14159这种带小数点的数。它在编程里很常用,比如画图要算圆周率,物理计算要算速度时间,还有游戏里的血条显示分数。不过存小数可比整数麻烦,因为整数像1和2之间差1,但小数像1.1和1.2之间差0.1,存的时候得拆成很多二进制位。存小数的时候会出小数点对不上的问题,比如0.1在电脑里其实是存成0.000000555...这种无限循环的数,加几次就会出错了。
为什么浮点数处理这么麻烦呢?因为二进制和十进制本来就不对板。比如单精度浮点数32位,小数点后最多存7位,双精度64位能存15位。举个例子,存0.1的时候,二进制会变成0.11...无限循环,所以存到第七位就截断了,变成0.000000555...(数据来源:IEEE 754标准)。这种精度损失在计算时像滚雪球一样累积,比如算100次0.1,结果可能变成10.0004。这就是为什么图形学里算颜色值要用双精度,物理引擎要存更精确的物理量。不过有些场景比如存钱,就不能用浮点数,得用整数单位分,或者用decimal类型专门存小数,这样就不会出错了。
本题链接: