年轻时候带学生做数值计算,有个娃跑来问我为什么累加结果死活对不上,嘴上还信誓旦旦说逻辑没问题。我瞄了一眼代码,好家伙,他在循环里拿 a == b 去判断两个浮点数是不是"相等"。
6说真的,0.1 加 0.2 在机器里压根不等于 0.3,这是 IEEE 754 那点精度误差闹的。循环里一比直接判 false,轻则结果离谱,重则卡成死循环出不来。正确姿势是取两者差的绝对值小于某个 epsilon,或者干脆换个思路别用浮点做精确相等判断。
这么基础的东西,答辩场上还有人踩。竞争才有进步,连浮点表示都没整明白,拿什么跟人卷。