Seite 1 von 1

float mit Nachkommastellen

Verfasst: Dienstag 7. Dezember 2010, 15:22
von Friedericus
Sers Leuts,

ich steh grad etwas aufm schlauch:

Code: Alles auswählen

a = float(5**1/2)

print float(a)
es soll aus 5 die Wurzel gezogen werden (inklusive Nachkommastellen). wenn ich das jedoch so ausführe, dann wirft er mir
aus.

Weiß jemand was ich falsch mache?

Re: float mit Nachkommastellen

Verfasst: Dienstag 7. Dezember 2010, 15:27
von Xynon1
Einen typischen Fehler, du teilst durch einen integer.

Mach 2.0 aus der 2, dann gehts.
oder aus der 1/2 gleich eine 0.5

Re: float mit Nachkommastellen

Verfasst: Dienstag 7. Dezember 2010, 15:35
von /me
Friedericus hat geschrieben:

Code: Alles auswählen

a = float(5**1/2)
Python 2.x
5 ** 1 = 5
5 / 2 = 2

Python 3.x
5 ** 1 = 5
5 / 2 = 2.5

Was du eigentlich haben möchtest sind Klammern (und bei Python 2.x eine Rechnung mit Floats):
5 ** (1.0 / 2)

Re: float mit Nachkommastellen

Verfasst: Dienstag 7. Dezember 2010, 16:11
von Darii
Oder

Code: Alles auswählen

from __future__ import division
am Anfang vermeidet viel Ärger.

Re: float mit Nachkommastellen

Verfasst: Dienstag 7. Dezember 2010, 17:48
von BlackJack
Oder vielleicht auch einfach `math.sqrt()`. :-)

Re: float mit Nachkommastellen

Verfasst: Dienstag 7. Dezember 2010, 17:56
von hendrikS
@Darii:
3.0 Features mit 2.0 Features zu mischen finde ich keine besonders gute Idee. Irgendwann kommst Du durcheinander. Es gibt so viel Möglichkeiten das zu lösen.

Re: float mit Nachkommastellen

Verfasst: Dienstag 7. Dezember 2010, 19:35
von Darii
hendrikS hat geschrieben:3.0 Features mit 2.0 Features zu mischen finde ich keine besonders gute Idee. Irgendwann kommst Du durcheinander.
Nicht mehr und nicht weniger als mit jedem anderen __future__-Import. Der division-Import steht bei mir jedenfalls in jeder Datei, in der ich rechne und für Integer-Division gibt es auch in 2.5 schon //. Da gibt es einfach nichts durcheinanderzubekommen.

Das einzige womit man da durcheinanderkommt, ist, dass das Standardverhalten von Python 2.x an dieser Stelle so unsäglich dämlich ist. Ich glaube es gibt niemanden der jemals dafür dankbar war, dass Python standardmäßig Integer-Division betreibt. Die float-Lösung aus 3.x ist zwar imo nicht das Optimum (das wäre ein Bruch wie es Smalltalk macht) aber besser als nichts.