2012-02-26 50 views
2

我想在Python 2.7解釋器中使用它。爲什麼我在Python中得到這個0作爲答案(1/10)?

>>> print 1/10 
0 
>>> print float(1/10) 
0.0 
>>> print 1/5 
0 
>>> a = 1/5 
>>> a 
0 
>>> float(a) 
0.0 
>>> 

我想分割時的浮點數值。任何關於這個零輸出邏輯的想法,請讓我知道如何正確地做到這一點。

+0

使用'打印1.0/10' – reclosedev 2012-02-26 05:58:55

+0

[爲什麼這個分區不能在python中工作?](http://stackoverflow.com/questions/1787249/why-doesnt-this-division-work-in-python) – 2012-02-26 08:31:20

回答

6

浮動轉換正在發生之後的整數除法。試試這個:

>>> print(1.0/10) 
0.1 
3

你需要做的是這樣的:

print (1.0/10) 

當你這樣做:

print 1/10 

它正在評估爲0,因爲它是把它當作一個整數。

當你這樣做:

print float(1/10) 

你拿的東西浮子內有()和evalute首先所以在本質上,你可以獲得:

print float(0) 

這將是0.0

5

在Python 2.x中,默認/表示整數(截斷)除法與兩個整數參數一起使用時。在Python 3.x中,/總是意味着浮點數除法和//總是表示整數除法。您可以使用下載的是Python 3.x的行爲2.X:

from __future__ import division 

爲師運營商的充分討論見PEP 238

1

整數除法1/10返回整數0。將整數0轉換爲浮點型,僅返回0.0。你需要做的是分開float和一個整數來獲得一個浮點數。這將工作。

>>> 1/10.0 
0.1 

結果 integer分裂
>>> 1.0/10 
0.1 
1

integer

From python docs

/(除法)和//(地板除法)運算得到的它們的參數的商 。數字參數首先轉換爲一個 通用類型。普通或長整數除法產生一個整數 相同的類型;其結果是,與應用於結果的 「地板」函數的數學分工

嘗試

>>> 1.0/5 
0.20000000000000001 
>>> 1/5.0 
0.20000000000000001 
>>> 
1

你想要做以下:

(float (1)/10) 
0

司在Python 2整數之間返回一個整數結果。 (在Python 3,它返回你可能期望一個float結果。)

爲了得到一個float結果,轉換成整數的至少一成浮動:

>>> print(1/10) 
0 
>>> print(1/float(10)) 
0.1 
>>> print(float(1)/10) 
0.1 
>>> print(float(1)/float(10)) 
0.1