2016-08-11 62 views
0

我正在嘗試編寫一個分割兩個數字的python腳本,然後在小數點後面存儲第一個數字的值,但是首先我要打印分部的答案。 例如: 31/7應該是4428,但是當我使用如何在python中顯示小數點

def spiel(): 
    anzahl=int(raw_input("Anzahl der Spieler")) 
    spieler=int(raw_input("Jeder wievielte spielt")) 
    if anzahl>0 and spieler>0: 
#Quotient berechnen 
     q=anzahl/spieler 
     print '%.2f'%q 

我得到的答案4.00,我做了什麼錯。

如果你能告訴我如何存儲小數點後的第一個小數點,那該多好啊! 在此先感謝

+2

的可能的複製(http://stackoverflow.com/questions/1267869/how-can -i-force-division-to-floating-point-in-python) –

回答

0

你正在int整除int。您應該使用花車

def spiel(): 
    anzahl=float(raw_input("Anzahl der Spieler")) 
    spieler=float(raw_input("Jeder wievielte spielt")) 
    if anzahl>0 and spieler>0: 
#Quotient berechnen 
     q=anzahl/spieler 
     print '%.2f'%q 

在迴應評論:

有多種方式做到這一點,什麼是最好的將取決於你的應用程序了:

q =anzahl/spieler 
print "{}".format(int(10*(q%1))) 
print "{}".format(int((q-int(q))*10)) 
print "{}".format(str(a).split(".")[1][0]) 

,可能有一些比較容易的人是我沒想到

+0

你應該不必... >>> >>> r = 3 >>> t = 4 >>>類型(r) >>>類型(t) >>>類型(r/t) ' – Anonymous

+0

這是真的python3,但不是python 2.7 – Ben

+0

謝謝你完美的作品,但我如何存儲小數點後的第一個小數,例如,如果我有2.5(我之前計算),然後存儲5或如果我有31/7 = 4.428,我在點後存儲了 –

0

在python2.7中: 如果你除了兩個整數,答案將是整數,因爲它會跳過十進制值。

如果你想精確浮動輸出,試試這個:

>>>float(10)/3 
>>>3.3333333333333335 

任何價值的應該是浮動。

+0

它在3.0中是自動的,而不是爲@Andreas工作,這就是爲什麼我認爲他使用2.7。 –

0

你在這裏做錯的事情是,你讓它相信師的操作數是整數(在劃分過程中)。

我確定你想要兩個整數。分裂過程中

  1. 使用浮動():你可以做以下的事情。在這裏,您不需要將Anzahl和spieler都轉換爲浮動。只是轉換斯皮勒:

    Q = anzahl /浮動(斯皮勒)

** 2。使用未來模塊。那麼你不需要改變代碼中的任何東西。寫下面一行在你的代碼的開頭:

from __future__ import division 
  • 使用Python 3,在Python 3「/」意味着你將非截斷分工和「//」的意思截斷除法
  • 0

    如果用整數除整數,您將收到一個整數。整數是整數,不是小數點。

    如果你用浮點數分隔浮點數/整數,你會收到一個浮點數。浮點數是一個整數,包括小數點。

    當您正在進行操作時,請將spieler更改爲浮點型。這可以通過float(spieler)完成。

    您的代碼看起來就像這樣:[?我怎樣才能航空兵某師是浮點數在Python]

    def spiel(): 
        anzahl=int(raw_input("Anzahl der Spieler")) 
        float(spieler)=int(raw_input("Jeder wievielte spielt")) 
        if anzahl>0 and spieler>0: 
    #Quotient berechnen 
         q=anzahl/spieler 
         print '%.2f'%q