Seite 1 von 1
Autocast vermeiden?
Verfasst: Freitag 29. Oktober 2004, 20:26
von Magnum
Hallo,
ich habe folgenden Python-Code
Es wird 0.000000 ausgegeben.
Wie kann ich erreichen, dass Python nicht a = 0.333333 setzt? Also nicht auf Integer castet. Das obere Codestück beschreibt ein komplizierteres Problem: Die Werte für b und c werden nämlich vorher berechnet und sind ganzzahlig.
Eine Antwort wie: "Schreib doch a = 1.0 / 3.0" hilft mir nicht weiter.
Danke für Eure Antworten.
Grüße
Magnum
Verfasst: Freitag 29. Oktober 2004, 20:29
von mawe
Hi!
Schreib doch:
Gruß, mawe
Verfasst: Freitag 29. Oktober 2004, 20:51
von Magnum
Hi mawe,
erstmal danke!
Es funktioniert teilweise, d.h. solange bis die die Zahlen b und c nicht zu groß werden. Ich berechne nämlich bei einer Variable die Fakultät, welche rasant steigt.
Muss ich mich damit zufrieden geben das es nicht mit sehr großen Zahlen funktioniert oder gibt es noch eine Lösung?
Magnum
Verfasst: Freitag 29. Oktober 2004, 21:05
von Dookie
Hi Magnum,
vielleicht könntest Du die Formel so umstellen, daß Du keine Division brauchst.
Milan hat mal eine Klasse für Brücher gepostet:
http://python.sandtner.org/viewtopic.php?t=475
Die könnte da auch hilfreich sein.
Gruß
Dookie
Verfasst: Freitag 29. Oktober 2004, 21:10
von mawe
Hi!
Es reicht wenn Du nur eine Zahl als
float nimmst.
In deinem Fall könntest Du also die kleinere Zahl in
float umwandeln. Die große bleibt dann
long.
Oder mit Milan's Klasse, wie Dookie schon vorgeschlagen hat.
Gruß, mawe
Verfasst: Freitag 29. Oktober 2004, 21:12
von Milan
Hi. Anderer Vorschlag, falls die Zahlen (speziell b) nicht abnormal groß sind:
Damit sollten dann auch sehr große a gebändigt werden können. Aber sobald a zu groß wird geht das auch in die Hose, da dann das addieren fehlschlägt...
Verfasst: Freitag 29. Oktober 2004, 21:27
von Magnum
mawe hat geschrieben:Hi!
Es reicht wenn Du nur eine Zahl als
float nimmst.
In deinem Fall könntest Du also die kleinere Zahl in
float umwandeln. Die große bleibt dann
long.
Oder mit Milan's Klasse, wie Dookie schon vorgeschlagen hat.
Gruß, mawe
Das bringt nichts, sobald Python(übrigens auch so in C) float/long teilen muss, wird der Nenner auf float gecastet.
@Dookie
In meinem Fall ist eine Klasse zu verwenden, wie mit Kanonen auf Spatzen zu schießen.
Magnum
Verfasst: Freitag 29. Oktober 2004, 21:40
von Milan
Hi. Erscheint mir aber als logische Alternative, es sei denn du schreibst dir selbst eine Funktion, die schriftliche Division von (a%b)/b beherrscht. a/b kann ja Python selber

...
Verfasst: Freitag 29. Oktober 2004, 21:57
von Dookie
@ Magnum: wenn die Spatzen groß genug sind

Float und Long sind ja auch Klassen.
Dookie