在Windows 7上的Python 3.2,以下內容:可能math.ceil()錯誤
print(int(math.ceil(24/10)))
給我 '3' 預期。
在運行Python 2.5的Windows Server上,它給了我'2'。
這裏有什麼問題,我該如何解決它?
這裏是我的原代碼:
number_of_pages = int(math.ceil(number_of_rows/number_of_rows_per_page))
感謝,
巴里
在Windows 7上的Python 3.2,以下內容:可能math.ceil()錯誤
print(int(math.ceil(24/10)))
給我 '3' 預期。
在運行Python 2.5的Windows Server上,它給了我'2'。
這裏有什麼問題,我該如何解決它?
這裏是我的原代碼:
number_of_pages = int(math.ceil(number_of_rows/number_of_rows_per_page))
感謝,
巴里
試試這個:print(int(math.ceil(24/10.0)))
,它會返回正確的值。正如已經指出的那樣,在Python 2.5中,表達式24/10
的計算結果爲2
,因爲它正在執行整數除法。
所有你需要知道的是http://www.python.org/dev/peps/pep-0238/。
編程語言的快速細讀發現整數由整數分割返回
的整數
浮點(星號表示存在替代語法返回整數)
別的
Python的選擇變化該師的語義是當時的quite controversial。返回一個整數通常讓程序員和數學家感到意外,但是,有經驗的程序員在發現劃分兩個整數可以返回浮點時經常會有同樣的感覺。
我喜歡使用比率來存儲浮游物的想法。它是否被考慮用於Python? – Baz 2012-03-15 21:47:04
在'fractions'模塊中有'Fraction'。但你幾乎從不需要它。在'decimal'模塊中還有'Decimal',它充當了更友好的浮點。這些數據類型固有地比整數和浮點更慢。他們也很笨拙。根據需要使用。 – 2012-03-15 22:15:44
我想這不是Python中的錯誤,而是更低的級別。 – bigblind 2012-03-15 19:16:11