前阵子随手写了个小脚本,把这几个月的账单按类目归归类,想看看钱到底漏在哪儿了。逻辑特别直白,读个csv、用float加总、打印分类。结果跑出来,总和跟银行卡对不上,差一分。
我一开始还琢磨是不是哪家商户四舍五入没对齐,一行行对,怎么都对不平。嗯嗯后半夜才回过味儿来,是float的锅。0.1加0.2在二进制里根本不是0.3,小数存不干净,攒多了就偏那么一丢丢。
后来全改成用整数按分算,瞬间就平了。
嗯嗯
现在只要碰到跟钱沾边的数,我第一反应就是先问单位该不该用整数。坑不大,但真踩上去那会儿挺怀疑人生的。你们有没有被浮点悄悄背刺过的瞬间?