當前位置:首頁 » 編程語言 » 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心機好深,操作真的要小心點...

熱點內容
nginx怎麼訪問php 發布:2024-11-18 16:22:55 瀏覽:303
螞蟻外快賺錢腳本 發布:2024-11-18 16:21:52 瀏覽:178
cnc編程培訓學習 發布:2024-11-18 16:16:33 瀏覽:405
android查看工具 發布:2024-11-18 16:03:46 瀏覽:893
目前安卓11如何安裝 發布:2024-11-18 15:55:06 瀏覽:236
安卓結構光對比蘋果哪個快 發布:2024-11-18 15:50:03 瀏覽:930
天天酷跑3v3掛機腳本 發布:2024-11-18 15:43:02 瀏覽:461
pythonif字元串不等於 發布:2024-11-18 15:32:34 瀏覽:435
vr上用什麼存儲晶元 發布:2024-11-18 14:57:39 瀏覽:618
伺服器如何查原廠件和拆機件 發布:2024-11-18 14:54:18 瀏覽:358