2016-08-11 32 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