繁体   English   中英

错误的代码或奇怪的数学行为? (python 3)

[英]Wrong code or strange math behavior? (python 3)

我通过乘法等计算变量,我注意到这种奇怪的行为。

如果我使用这些计算:

CD = 6
CDR = 0.4

CD = float(CD) - (float(CDR) * float(CD))

理论上,如果我打印(CD)打印,那将是6 - (6 * 0.4)= 6 - 2.4 = 3.6

3.5999999999999996

我有什么理由可以避免吗? 是否有一种方法,比如math.ceil将数字向上舍入但是到某个小数,例如x.xxxxx(第5个deciamal)?

(请告诉我,如果我在这篇文章中做错了什么,我会在这个网站上找到答案,但之前从未发布过,所以我可能做错了什么,提前道歉。)

你可以尝试十进制模块,但在引擎盖下你的答案仍然是“正确的”。 这就是浮点数如何转换为十进制表示。

你正在遇到浮点运算问题。 尝试使用decimal.Decimal而不是float

如果只是为了显示(或者一点心思)你可以做

x = math.ceil(x*100000.0) / 100000.0

但是,不能保证将是一个可以在内存中精确表示的数字(最终使用相同的3.599999999 ..)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM