2025-11-20 06:16:52
float不浮动是因为存储方式有限,比如单精度float只能存23位小数位,遇到像1.1+0.2这种需要更多位数的计算,就会自动四舍五入变成1.3。这种精度损失就像用算盘算账,位数不够就抹平了小数点后的数字。
浮点数不能直接运算是因为存储结构像被剪了翅膀的鸟,既要存整数部分又要存小数部分。比如单精度float占4字节,其中1位符号位,8位指数位,23位尾数位。当计算1.1+0.2时,1.1的二进制是1.11...循环,0.2是1.01...循环,相加后需要保留23位尾数,结果变成1.11...,对应十进制1.000004。这种精度损失就像用尺子量身高,刻度不够就会出错。而双精度double有52位尾数位,能更精确地处理这类计算,但依然无法完全避免精度问题。
本题链接: