2010-12-16 9 views
2

Bisher würde ich int(float('3.5'))Python: Convert 3.5 'auf ganzzahlige

irgendeine andere gute Weise tun zu tun?

Hinweis: 3,5 ist eine Zeichenfolge.

Ich möchte die integrierte API verwenden, die für diese Art von Problem angeben.

+0

Was meinst du mit "gut"? –

Antwort

5

Sie sind auf dem richtigen Weg und die beste Lösung ist wahrscheinlich wie erwähnt:

>>> int(float("3.5")) 

Diese den Schwimmer abschneidet.

Wenn Sie eine andere Art von Rundungs ​​wollen, können Sie das math Paket verwenden:

>>> import math 
>>> x = "3.5" 
>>> math.floor(float(x)) # returns FP; still needs to be wrapped in int() 
3.0 
>>> math.ceil(float(x)) # same 
4.0 
>>> math.trunc(float(x)) # returns an int; essentially the same as int(float(x)) 
3 

Wenn auf der anderen Seite Sie die Zahl auf die nächste ganze Zahl abzurunden möchten, können Sie die Floating-Point verwenden integrierte Operation round vor der Umwandlung in eine ganze Zahl, z

>>> int(round(float(x))) # 3.5 => 4 
4 
>>> int(round(3.4999)) 
3 
1

Alles, was Sie brauchen, ist int(3.5)

Beachten Sie, dass diese abschneidet; es rundet nicht.

+0

3.5 ist eine Zeichenfolge, sorry, ich habe es nicht klar gesagt. – user469652

+0

>>> int ('3.5') Traceback (letzter Aufruf zuletzt): Datei "/var/apache2/2.2/htdocs/try.py", Zeile 146, in Wrapper Wert, wantmore = evaluate (Quelle, hisvars) File "/var/apache2/2.2/htdocs/try.py", Zeile 126, zu bewerten in value = eval (code, hisvars) File "", Zeile 2, in Valueerror: invalid wörtliche für int() mit Basis 10: '3.5' >>> – user469652

+1

Eigentlich nicht - in diesem Fall würde ich die Methode in Ihrem Beitrag verwenden. Andernfalls erhalten Sie 'ValueError: ungültiges Literal für int() mit Basis 10: '3.5'' – Hut8

4

Der einzige Code, der möglicherweise einfacher und klarer als das, was Sie haben, ist int('3.5'), die nicht funktioniert. Was Sie also haben, ist der einfachste und klarste Arbeitscode.

1

Vielleicht int(eval('3.5'))

+1

Ich würde sagen, das ist eine schlechte Idee, da in der Regel eval ziemlich hässlich sein kann. Wenn es andere Optionen als eval gibt, sollten sie wahrscheinlich zuerst berücksichtigt werden. –

+0

Ich stimme zu. Ich habe gerade versucht, Alternativen zu geben. –