我通过乘法等计算变量 我注意到这种奇怪的行为。
如果我使用这些计算:
CD = 6
CDR = 0.4
CD = float(CD) - (float(CDR) * float(CD))
从理论上讲,这将是6 - (6 * 0.4)= 6 - 2.4 = 3.6如果我打印(CD)它打印
3.5999999999999996
我有什么理由可以避免吗?是否有一种方法,比如math.ceil来舍入数字但是到某个小数,例如x.xxxxx(第5个十分)?
(请告诉我,如果我在这篇文章中做错了什么,我会在这个网站上找到答案一段时间但之前从未发布过,所以我可能做错了什么,提前道歉。)
答案 0 :(得分:2)
你可以试试decimal模块,但是你的答案仍然是“正确的”。这就是浮点数如何转换为十进制表示。
答案 1 :(得分:0)
您正在遇到浮点运算问题。尝试使用decimal.Decimal代替float
。
答案 2 :(得分:0)
如果只是为了显示(或心灵)你可以做
x = math.ceil(x*100000.0) / 100000.0
然而,无法保证该数字可以在内存中完全表示(最终使用相同的3.599999999 ..)