簡體   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