前言

说实话 这问题挺艹蛋的,我调试了半天,发现是Python所有浮点数规范遵从IEEEE754二进制浮点数算术标准(ANSI/IEEE Std 754-1985),说一下我想实现什么吧,就是出价的数字

出价 78.6
换算成程序出价是要乘个100000
真实结果:7860000

错误代码

(78 + round(random.uniform(1, 0), 2)) * 100000

运行结果

7880000.0
7816000.0
7859000.0
7834999.999999999
7820999.999999999
7859999.999999999

这肯定不对的啊.....
后来查到一篇文章讲了这个 https://xufive.blog.csdn.net/article/details/103816159
真是太恶心了

解决方法

from decimal import *
Decimal((78 + round(random.uniform(1, 0), 2)) * 100000).quantize(Decimal('0'))

用了Decimal模块完美解决此问题

结果

7844000
7898000
7900000
7825000
7872000
7843000
7810000
7866000
7807000
7836000
7826000
7803000
7832000
7868000
7851000
7868000
最后修改:2021 年 09 月 05 日
如果觉得我的文章对你有用,请随意赞赏