導航:首頁 > 編程語言 > python向下取整數

python向下取整數

發布時間:2023-07-17 04:29:47

python筆記-取模運算%

對於該算術運算符: % ,取模運算存在如下定理:

對於一個正整數 而言,一定存在等式 ,代表 可以被拆分成最多 個 並且餘下一個 ,此時稱 。

例如:正整數 17,存在等式 17 = 3 * 5 + 2,即 17 % 5 = 2.

這里介紹一下數學中的一種運算, 取余運算

兩者在對正整數的運算中完全沒有區別,但是對於負整數的運算,則會存在一定的區別。

但是要記住下面這句話,就可以很好的進行區分:

取余公式中的k要向0靠攏,也就是如果大於等於0,那就要向下取整;如果小於0,那就要向上取整。

取模公式中的k要向負無窮靠攏,不管什麼情況,都是向下取整。

或者是

向上取整 math.ceil() 可以理解成 要選擇大於等於該數值的整數部分的最小整數;

向下取整 math.floor() 可以理解成 要選擇小於等於該數值的整數部分的最大整數。

也就是:

下面做些實際運算,加深一下印象:

⑵ python中//是什麼意思

在Python" // "表示整數除法。

Python其它表達式:

Python的表達式寫法與C/C++類似。只是在某些寫法有所差別。

主要的算術運算符與C/C++類似。+, -, *, /, //, **, ~, %分別表示加法或者取正、減法或者取負、乘法、除法、整除、乘方、取補、取余。

>>, <<表示右移和左移。&, |, ^表示二進制的AND, OR, XOR運算。>, <, ==, !=, <=, >=用於比較兩個表達式的值,

分別表示大於、小於、等於、不等於、小於等於、大於等於。在這些運算符裡面,~, |, ^, &, <<, >>必須應用於整數。

(2)python向下取整數擴展閱讀:

Python使用and, or, not表示邏輯運算。

is, is not用於比較兩個變數是否是同一個對象。in, not in用於判斷一個對象是否屬於另外一個對象。

Python支持「列表推導式」(list comprehension),比如計算0-9的平方和:

>>> sum(x * x for x in range(10))

285

Python使用lambda表示匿名函數。匿名函數體只能是表達式。比如:

>>> add=lambda x, y : x + y

>>> add(3,2)

Python使用y if cond else x表示條件表達式。意思是當cond為真時,表達式的值為y,否則表達式的值為x。相當於C++和Java里的cond?y:x。

Python區分列表(list)和元組(tuple)兩種類型。list的寫法是[1,2,3],而tuple的寫法是(1,2,3)。可以改變list中的元素,而不能改變tuple。

在某些情況下,tuple的括弧可以省略。tuple對於賦值語句有特殊的處理。因此,可以同時賦值給多個變數,比如:

>>> x, y=1,2 # 同時給x,y賦值,最終結果:x=1, y=2

特別地,可以使用以下這種形式來交換兩個變數的值:

>>> x, y=y, x #最終結果:y=1, x=2

Python使用'(單引號)和"(雙引號)來表示字元串。與Perl、Unix Shell語言或者Ruby、Groovy等語言不一樣,兩種符號作用相同。一般地,如果字元串中出現了雙引號,就使用單引號來表示字元串;反之則使用雙引號。如果都沒有出現,就依個人喜好選擇。

出現在字元串中的(反斜杠)被解釋為特殊字元,比如 表示換行符。表達式前加r指示Python不解釋字元串中出現的。這種寫法通常用於編寫正則表達式或者Windows文件路徑。

Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的類型有str, bytes, list, tuple等。

它的語法是...[left:right]或者...[left:right:stride]。假定nums變數的值是[1, 3, 5, 7, 8, 13, 20],那麼下面幾個語句為真:

nums[2:5] == [5, 7, 8] 從下標為2的元素切割到下標為5的元素,但不包含下標為5的元素。

nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最後一個元素。

nums[:-3] == [1, 3, 5, 7] 從最開始的元素一直切割到倒數第3個元素。

nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改變新的列表不會影響到nums。

nums[1:5:2] == [3, 7] 從下標為1的元素切割到下標為5的元素但不包含下標為5的元素,且步長為2。

⑶ 在python中,為什麼-10//-3結果是-1,-10//3結果為2,10//-3為-2。結果怎麼理解

簡單理解就是的出來的結果如果不是整數, 就取比結果小的最大整數
比如 -10/4.0 = -2.5 , 取比-2.5小的最大整數, 就是-3, 所以 -10//4=-3

⑷ 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心機好深,操作真的要小心點...

⑸ python中36%-5為什麼等於-1

36%-5根本就不等於-1,36%-5等於-4好吧?

下圖是驗證:

為什麼36%-5等於-4?

因為%是求余數,余數=被除數-被除數//除數*除數。

而//是整除,對於python語言//是向下取整,即向負無窮大方向取整,結果是不大於商的最大整數。

36除以-5的商是-7.2,不大於-7.2的最大整數是-8,所以36//-5等於-8。

所以36%-5=36-(36//-5)*(-5)=36-(-8)*(-5)=36-40=-4。

閱讀全文

與python向下取整數相關的資料

熱點內容
java互聯網公司 瀏覽:68
對弈下象棋的app哪裡好 瀏覽:705
有什麼食譜app推薦 瀏覽:469
python實現動態口令 瀏覽:823
我的世界電腦伺服器地址怎麼添加 瀏覽:850
傳奇地圖怎麼加密到pak 瀏覽:977
linux刪除mysql用戶 瀏覽:755
圖案設計pdf 瀏覽:584
pdf編輯器在線 瀏覽:471
華為雲雲耀伺服器如何關機 瀏覽:994
數字加密的歷史 瀏覽:613
宏傑文件夾打不開 瀏覽:819
施工日記app哪個好 瀏覽:566
什麼是壓縮機的排氣量 瀏覽:538
在哪個app可以預約一科考試 瀏覽:634
易語言vmp加殼源碼 瀏覽:513
閱讀前端框架源碼 瀏覽:14
我的世界命令方塊傳送指令 瀏覽:545
不能用start命令打開xp 瀏覽:926
text命令 瀏覽:31