前言
说实话 这问题挺艹蛋的,我调试了半天,发现是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