前两天写了个小脚本,逻辑特简单,俩小数相加跟预期比对一下。结果跑出来死活不对,我盯屏幕怀疑人生。
后来才想起来浮点数那茬……0.1+0.2 在机器里根本不是 0.3,是 0.30000000000000004 这种鬼东西。我当初直接拿 == 去比,当然永远 false,查了半天。改成 abs(a-b) < 1e-9 才消停。
btw 这坑真不挑人。我当年读研延毕那阵,被导师的烂代码坑过类似的浮点比较,debug 到凌晨四点。现在看见小数比较就条件反射加容差。你们被浮点背刺过没,说出来让我平衡一下