Servus,
ich habe mal eine Frage zu Floats in einer List.
ich habe zwei Listen mit den Werten im Beispiel.
meine erste Frage dazu ist, wenn ich den topVector1 ausgebe dann bekomme ich die Werte die auch drin sind, wenn ich aber nur topVector1[0] ausgebe dann bekomme ich eine "kuerzere" Zahl heraus!
meine zweite Frage ist, width ergibt das Ergebnis 23.0, und wird durch 0.5 dividiert, das Ergebnis von tileAcross ist 46.0. aber wenn ich es dann als int(tileAcross) ausgebe bekomme ich 45!!!
[code=py]
import math
tilesize=0.5
topVector1=[69.448009935042961, 3.2652270793914795, 8.1317279836453142]
topVector2=[85.711465902333543, 3.2652270793914795, -8.1317279836452787]
width=math.sqrt((math.pow(topVector2[0]-topVector1[0],2))+(math.pow(topVector2[1]-topVector1[1],2))+(math.pow(topVector2[2]-topVector1[2],2)))
tilesAcross= (width/tilesize)
[/code]
Float in einer List,
Du bekommst immer die gleichen Werte. In Listen werden Fliesskommazahlen nur mit mehr Nachkommastellen angezeigt weil in Listen die `repr()`-Funktion zum Darstellen benutzt wird.
Der Wert von `a` ist aber immer der selbe. Man kann sogar noch mehr Stellen ausgeben lassen:
Das Ergebnis von `tilesAcross` ist nicht 46.0 sondern 45.999999999999986 (bzw. 45.9999999999999857891452847979962825775146484375). `int()` rundet nicht, sondern schneidet die Nachkommastellen einfach ab:
Code: Alles auswählen
In [591]: a = 0.1
In [592]: print a, [a]
0.1 [0.10000000000000001]
In [593]: str(a), repr(a)
Out[593]: ('0.1', '0.10000000000000001')
Code: Alles auswählen
In [594]: '%.56f' % a
Out[594]: '0.10000000000000000555111512312578270211815834045410156250'
Code: Alles auswählen
In [608]: int(1.9)
Out[608]: 1
-
- User
- Beiträge: 9
- Registriert: Donnerstag 11. Oktober 2007, 12:19
ich dachte wenn er mir 46.0 ausgiebt dass es dann auch 46.0 ist,
ich wusste nicht dass ich die Nachkommazahlen mir trotzdem anzeigen lassen kann
Vielen Dank.
ich wusste nicht dass ich die Nachkommazahlen mir trotzdem anzeigen lassen kann
Vielen Dank.
Darf ich auch noch diesen Thread in die Runde werfen:
http://www.python-forum.de/viewtopic.ph ... ght=#78776
?
Könnte Dir helfen Deinen Code etwas aufzuräumen 3D-operator .
Gruß,
Christian
http://www.python-forum.de/viewtopic.ph ... ght=#78776
?
Könnte Dir helfen Deinen Code etwas aufzuräumen 3D-operator .
Gruß,
Christian