Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #5660
| From | Peter Otten <__peter__@web.de> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] Python2 auf 3: Matheberechnungen |
| Date | 2020-08-18 10:56 +0200 |
| Organization | None |
| Message-ID | <mailman.604.1597740997.9580.python-de@python.org> (permalink) |
| References | <hq1glnF175jU1@mid.individual.net> <2248102.5IIjVbcv3P@palindrom> |
Am Di August 18 2020, 08:09:29 schrieb Stephan Seitz: > Hallo! > > Ich versuche gerade, das völlig unnötige ;-) Python-Script AstroBuild > (https://github.com/lhartikk/AstroBuild) auf Python3 zu migrieren. > > Dabei stelle ich aber fest, daß die verwendeten mathematischen > Funktionen teilweise zu anderen Ergebnissen kommen. > > Eine Funktion berechnet z.B. aus Jahr, Monat, Tag und Stunde den folgenden > Wert: > return 367*year - 7 * ( year + (month+9)/12 ) / 4 + 275*month/9 + day - > 730530 + float(hour)/float(24) > > Python2 kommt aktuell auf 7536.33333333, Python3 auf 7535.298611111201. > Da dieser Wert für weitere Berechnungen verwendet wird, komme ich nie > auf identische Ergebnisse. > > Woran liegt das? In Python 2 kommt es auf den Typ der Operanden an -- bei der Division zweier int ist das Ergebnis wieder ein int, in allen anderen Fällen ein float: # py2 >>> 7/2 3 >>> 7./2 3.5 In Python 3 ist das Ergebniss immer ein float: # py3 >>> 7/2 3.5 > Und wie portiert man dann so ein Script? Du musst die Divisionen identifizieren, bei denen sowohl Dividend als auch Divisor ganzzahlig sind, und dort den Operator / durch // ersetzen: # py3 und py2, i. e. die Änderung ist rückwärtskompatibel >>> 7//2 3 PS: Du kannst das Verhalten von py3 in py2 erzwingen mit # py2 >>> 7/2 3 >>> from __future__ import division >>> 7/2 3.5
Back to de.comp.lang.python | Previous | Next — Previous in thread | Find similar
Python2 auf 3: Matheberechnungen Stephan Seitz <stse+usenet@rootsland.net> - 2020-08-18 08:09 +0000
Re: [Python-de] Python2 auf 3: Matheberechnungen Hartmut Goebel <h.goebel@goebel-consult.de> - 2020-08-18 10:38 +0200
Re: [Python-de] Python2 auf 3: Matheberechnungen Stephan Seitz <stse+usenet@rootsland.net> - 2020-08-18 11:00 +0000
Re: [Python-de] Python2 auf 3: Matheberechnungen Peter Otten <__peter__@web.de> - 2020-08-18 10:56 +0200
csiph-web