[英]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.