昨晚随手写个小脚本算月度开销分摊,逻辑巨简单,跑出来却一堆诡异小数。debug 半天发现是浮点数精度的坑,0.1 + 0.2 在机器里竟然是 0.30000000000000004,这个 feature 真的让我当场沉默哈哈。
想想也合理,IEEE 754 拿二进制存小数,0.1 在十进制很乖,二进制却是无限循环小数只能 trunc 掉,误差就一点点攒起来。平时没感觉,一比大小或者算钱立马露馅。
6
后来学乖了,沾钱的全用整数分来算,或者上 decimal 这种专门库,别拿 float 硬刚。sounds good 但真踩过才记得住。你们还遇过啥看着离谱的数值 bug 不