新四季網

python上取整和下取整(22.為什麼Python)

2023-05-18 18:48:43 3

本系列文章譯自Python之父 Guido van Rossum 的系列博客「The History of Python」。這個博客系列對我們理解Python及其演變很有幫助,經Guido同意,在這裡翻譯推薦給大家,希望大家喜歡,也請大家多多指教!

系列地址:http://blog.kantli.com/theme/1

1

今天又有人問我,為什麼 Python 中整數相除是向下取整,而不像 C語言一樣靠 0 取整?

對正整數來說,兩種取整方式的結果是一樣的:

>>> 5//22

如果其中一個是負數,結果就不是向零靠近了(而向負無窮靠近):

>>> -5/2-3>>> 5//-2-3

這個問題讓一些人感到困擾,但其實是有數學考慮的。整除操作(//)與取模操作(%)是一個組合,共同實現一個數學關係(所有變量都是整數):

# a/b = q 餘 r

'# b*q r = a,其中 0 <= r < b

當 a 為負數(b 保持正數),我們有兩個選擇:一個是讓 q 向零取整,於是餘數 r 會變成負數,即 0 <= abs(r) = r > b。

2

那麼,C語言為什麼採用了向零取整呢?或許是因為當時的硬體設計——在最早期的硬體中,負數的表現方式是「符號 數字」,而不是現在一般採用的補碼(至少整數是如此)。

我用的第一臺電腦是一臺 CDC 主機,其整數和浮點數都是用補碼表示的,60 個 1 表示的是負 0。

Tim Peters 曾擔心我會把這個原則擴展到浮點數。他或許是對的,當 x 是一個非常小的負數時,向下取整原則會導致 x % 1.0 出現精度損失。但這個問題並不影響我讓整數採取向下取整原則。

PS. 請注意,我用的符號是 // 而不是 /,這是 Python 3 中的句法,在 Python 2 中也可以使用,表示用戶明確使用整除而不是除號。Python 2 中的 / 操作可能會有歧義,因為當兩個參數都是整數時,它只返回整數,而當存在浮點數參數時,則返回浮點數。不過這是另一個故事了,可以參考 PEP 238。

公眾號:ReadingPython

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了