N317V hat geschrieben:mawe hat geschrieben:
N317V hat geschrieben:
Auch Sachen wie 6/2 ? Das fänd ich aber doof.
Was ist daran so schlimm?
Nicht wirklich schlimm aber IMHO unnötig kompliziert. Vielleicht bin ich da ein bisschen blauäugig, aber für mich gilt: 6 durch 2 ist einfach nur 3.
Ja und? Wo liegt das Problem? Solange gilt ``3.0 == 3`` sollte das keinen Unterschied machen. Ich finde das alte Vehalten eher ungünstig weil für mich 5 durch 2 intuitiv 2.5 ist und nicht 2. Das finden sicher mehr Leute, die denken sie können Mathe, recht eigenartig.
mawe hat geschrieben:N317V hat geschrieben:
Tatsächlich ist dieses seltsame Divisionsverhalten von Python schon immer das was mich am meisten daran stört.
Das wird doch aber durch das "neue" Verhalten weniger seltsam. Der Unterschied zwischen ganzer Zahl und Fliesskommazahl mit ausschliesslich 0en hinter dem Komma ist mathematisch gesehen nicht da. Und trotzdem wird er von vielen Programmiersprachen künstlich hergestellt. An der Stelle scheint dann "Hardware" durch, die man in High-Level Programmiersprachen eigentlich nicht haben möchte. Darum wurde ja netterweise auch `int` und `long` vereinheitlicht, d.h. die Grenze zwischen beiden so fliessend wie möglich gemacht.
Das ist nicht auf Python beschränkt. Eigentlich macht das fast jede Programmiersprache so. Bei denen mit static typing bekommst dann halt eine Fehlermeldung
Nicht in jedem Fall. In vielen Programmiersprachen wird automatisch zwischen den Zahlentypen gewandelt solange kein Genauigkeitsverlust auftreten kann. Und ganze Zahlen in Fliesskommazahlen umwandeln geht verlustfrei.
Das lässt sich in C, Java, C# ohne Fehler kompilieren und ergibt ``x == 4``. Vielleicht nicht das womit man gerechnet hat.