2010-12-29 4 views
2
float(float(1)/float(i) * float(score)) 

Antwort

10

Unter der Annahme, Python 2.x: 1.0/i * score

Der Haupt Fall, dass Sie sich Sorgen machen müssen ist die Teilung, weil in Python 2.x Division vorbelegt Division integer. Um eine Gleitkommadivision zu haben, muss entweder der Dividend oder der Divisor ein Float sein, daher die 1.0. Somit wird ein Gleitkomma sein, und Multiplizieren eines Gleitkommawerts mit einer Punktzahl (die entweder eine Ganzzahl oder ein Gleitkomma sein kann) führt zu einer anderen Gleitkommazahl.

In Python 3.x wird die Division jedoch standardmäßig auf Gleitkommadivision angewendet, sodass 1/i * score funktionieren würde.

+1

+1. Perfekt und ein paar mehr Charaktere! – slezica

0

Wenn ich nicht völlig falsch bin, sollte eine einfache 1.0/i * score zu einem Float führen. Ich bin mir nicht sicher, ob das nur Python 3 ist.

+4

in Python 3, 'score/i' – Jimmy

2

1.0 * score/i; sollte es tun

3

Was Sie wollen einfach float(score)/i in Python2 ist. Wenn ein Operand ein Gleitkomma ist, dann wird das Ergebnis auch ein Gleitkomma sein, so dass Code wie score/float(i) oder 1.0*score/i ebenfalls funktioniert.

Sie können auch from __future__ import division an der Spitze Ihrer .py-Datei setzen, und Sie haben Float Division standardmäßig. Das bedeutet, dass Sie score/i schreiben können und es wird ein Float sein, wie in Python3.

+2

Und' from __future__ import divison' zusammen mit 'score/i' ist die einzige Möglichkeit, den gleichen Code mit' score' und 'i' als' dezimal.Decimal' arbeiten zu lassen. –

Verwandte Themen