昨晚又熬夜搓代码,整了个记账的小玩意儿,结果给我整懵了。
就一行的事儿:0.1 + 0.2,我寻思这不等于0.3吗,小学生都知道。结果程序一跑,蹦出来个 0.30000000000000004。我当时就??嗯?
查了半天才反应过来,浮点数那套是二进制的锅,像0.1这种在二进制里是个无限循环小数,压根存不精确,误差就一点点攒出来了。平时看不出来,一算钱就露馅,几分几毛对不上,对账能给人整疯。
对了
后来学乖了,涉及钱一律用整数,最小单位按分算,显示时候再除100。要么就老老实实上 decimal 库。这坑踩过一次记一辈子哈哈。
你们有没有被浮点背刺过的,说出来让我平衡一下(