當前位置:首頁 » 編程語言 » python向上取整函數

python向上取整函數

發布時間: 2024-11-18 14:39:32

1. python 如何向上取整


python向上取整

相關推薦:《Python教程》

方法:

Pythonmatch.ceil函數

ceil(x)函數是向上取整,即取大於等於x的最接近整數。

import math

math.ceil(float(1)/2)

2. python中取整

定義:大於或等於 x 的最大整數 math.ceil(x)
向上取整運算為Ceiling,用數學符號⌈⌉表示

定義:小於或等於 x 的最大整數 math.floor(x)
向上取整運算為Floor,用數學符號⌊⌋表示

其實反斜杠 // 也能實現向下取整:

但是在某些情況下 // 和 math.floor(x) 的實現結果又不一樣:

還是因為浮點數在計算機中存儲值並不是0.05而是0.05...125,具體解釋還是看這里吧 為什麼Python中//和math.floor運算結果會不同 。

向0取整:x為負數時向上取整,x為正數時向下取整。
python中可用 int(x) 實現,也可以用 math.modf(x) 返回一個包含小數部分和整數部分的元組。

有人可能會對 math.modf(-2.36) 結果感到好奇,按理說它應該返回 (0.36, 2.00) 才對。這里涉及到了另一個問題,即浮點數在計算機中的表示,在計算機中是無法精確的表示小數的,至少目前的計算機做不到這一點。上例中最後的輸出結果只是 0.36 在計算中的近似表示。
Python和C一樣, 採用IEEE 754規范來存儲浮點數,更詳細解釋,可以參考知乎話題:
為什麼0.1+0.2=0.30000000000000004而1.1+2.2=3.3000000000000003

從官方文檔得知,Python中 round(x) 採用銀行進位法而非傳統的四捨五入。

銀行進位規則:
① 如果保留數最後一位不等於5,則執行四捨五入,例如 round(5.234, 2)=5.23 round(5.236, 2)=5.24
② 如果保留數最後一位等於5,則取決於5的位置和狀態:⑴ 如果5後有數,不論奇偶都要進位,例如 round(5.2354, 2)=5.24 ;⑵ 如果5後沒有數,則需要看5的前一位奇偶性,奇進偶舍,例如 round(5.235, 2)=5.24 , round(5.225, 2)=5.22
但是!注意!:

內心中一片烏鴉飛過,說好的奇進偶舍呢???其實我內心也是奔潰的,繼續找答案:
我們都知道,計算機所存儲的浮點數並不是表面這么簡單,他並不是一個精確值,可以用decimal模塊的Decimal對象,將float數據映射為底層的更精確的表示。:

round還是那個round,過錯就在於float對象「眼見而非實」上,那到底如何實現真正意義四捨五入呢??
decimal模塊是Python的一個標准庫,是專門為十進制小數的精確計算而設計的,使用decimal模塊的介面,可以實現小數精確的四捨五入,具體不多做展開了,可以參考官方文檔...暫時我也用不到decimal
一路寫下來,結論就是float心機好深,操作真的要小心點...

熱點內容
安卓系統怎麼通話 發布:2025-03-16 00:25:13 瀏覽:320
資料庫上t 發布:2025-03-16 00:23:31 瀏覽:410
編譯程序實現的途徑 發布:2025-03-16 00:17:07 瀏覽:560
app編程入門 發布:2025-03-16 00:04:20 瀏覽:195
插接式資料庫 發布:2025-03-15 23:52:59 瀏覽:68
安卓從哪裡設置後攝像頭鏡像 發布:2025-03-15 23:51:27 瀏覽:975
伺服器電腦超頻教程 發布:2025-03-15 23:50:48 瀏覽:979
蘋果手機如何找回appid密碼 發布:2025-03-15 23:48:36 瀏覽:408
汽車頂部黑色是什麼配置 發布:2025-03-15 23:40:15 瀏覽:563
校考上傳照片 發布:2025-03-15 23:30:02 瀏覽:852