On 2025-04-10 15:02, Peter Heitzer <[email protected]> wrote:
> Hermann Riemann <[email protected]> wrote:
>>Das Ergebnis von -1//2 ist laut Python3 -1
>>Wegen Vorzeichen shift?
> Der Operator // macht eine Floor Division und math.floor(-0.5) ergibt
> -1.
Die Floor-Division in Python ist allerdings etwas ungewöhnlich.
Sie hat aber den Vorteil, dass sowohl
a // b * b + a % b == a
gewährleistet ist als auch dass
a % b
zwischen 0 und b liegt.
Die meisten Programmiersprachen runden bei Integer-Division Richtung 0
("abschneiden").
Damit ist nur mehr eine der beiden Bedingungen erfüllbar.
In C oder PostgreSQL ist es die erste (dafür liegt dann a % b zwischen
-b und b).
In Perl ist der % Operator so wie in Python definiert, aber Perl hat
keine echte Integer-Division, also ist schwer zu sagen, wie die
definiert wäre, wenn es sie gäbe. In den Fällen, wo Perl einen Integer
erwartet (z.B. als Array-Index) und einen Float-Wert bekommt, schneidet
es aber ab, was nahelegt, dass die Gleichung nicht erfüllt wäre.
hjp
_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an
[email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]