Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #6286 > unrolled thread

-1//2

Started byHermann Riemann <nospam.ng@hermann-riemann.de>
First post2025-04-10 16:50 +0200
Last post2025-04-11 13:18 +0200
Articles 7 — 4 participants

Back to article view | Back to de.comp.lang.python


Contents

  -1//2 Hermann Riemann <nospam.ng@hermann-riemann.de> - 2025-04-10 16:50 +0200
    Re: -1//2 "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> - 2025-04-10 15:02 +0000
      Re: -1//2 "Peter J. Holzer" <hjp-usenet4@hjp.at> - 2025-04-10 20:08 +0200
        Re: -1//2 "Peter J. Holzer" <hjp-usenet4@hjp.at> - 2025-04-23 22:10 +0200
      Re: -1//2 Hermann Riemann <nospam.ng@hermann-riemann.de> - 2025-04-11 06:27 +0200
        Re: -1//2 "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> - 2025-04-11 08:04 +0000
        Re: -1//2 Patrick Rudin <taxi_bs@gmx.ch> - 2025-04-11 13:18 +0200

#6286 — -1//2

FromHermann Riemann <nospam.ng@hermann-riemann.de>
Date2025-04-10 16:50 +0200
Subject-1//2
Message-ID<m5q46bFbsj1U1@mid.individual.net>
Das Ergebnis von -1//2 ist laut Python3 -1
Wegen Vorzeichen shift?

[toc] | [next] | [standalone]


#6287

From"Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de>
Date2025-04-10 15:02 +0000
Message-ID<m5q4rgFbtc4U1@mid.individual.net>
In reply to#6286
Hermann Riemann <nospam.ng@hermann-riemann.de> 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.
Siehe dazu PEP238 https://peps.python.org/pep-0238/


-- 
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de

[toc] | [prev] | [next] | [standalone]


#6288

From"Peter J. Holzer" <hjp-usenet4@hjp.at>
Date2025-04-10 20:08 +0200
Message-ID<slrnvvg291.2oarc.hjp-usenet4@trintignant.hjp.at>
In reply to#6287
On 2025-04-10 15:02, Peter Heitzer <peter.heitzer@rz.uni-regensburg.de> wrote:
> Hermann Riemann <nospam.ng@hermann-riemann.de> 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

[toc] | [prev] | [next] | [standalone]


#6296

From"Peter J. Holzer" <hjp-usenet4@hjp.at>
Date2025-04-23 22:10 +0200
Message-ID<slrn100ii8v.2503r.hjp-usenet4@trintignant.hjp.at>
In reply to#6288
On 2025-04-10 18:08, Peter J. Holzer <hjp-usenet4@hjp.at> wrote:
> On 2025-04-10 15:02, Peter Heitzer <peter.heitzer@rz.uni-regensburg.de> wrote:
> 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).

Nachtrag: In CSS gibt es beide Varianten von %: rem() so wie % in C und
mod() so wie % in Python.

        hjp

[toc] | [prev] | [next] | [standalone]


#6290

FromHermann Riemann <nospam.ng@hermann-riemann.de>
Date2025-04-11 06:27 +0200
Message-ID<m5rk1jFj5dbU1@mid.individual.net>
In reply to#6287
Am 10.04.25 um 17:02 schrieb Peter Heitzer:
> Hermann Riemann <nospam.ng@hermann-riemann.de> 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.
> Siehe dazu PEP238 https://peps.python.org/pep-0238/

Floor ist floating point.
-1, 2, // soll alles integer sein.

-1//2==-(1//2)
liefert False

Sieht mir ungewohnt aus.

-- 
<http://www.hermann-riemann.de>

[toc] | [prev] | [next] | [standalone]


#6291

From"Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de>
Date2025-04-11 08:04 +0000
Message-ID<m5s0nkFkr0aU1@mid.individual.net>
In reply to#6290
Hermann Riemann <nospam.ng@hermann-riemann.de> wrote:
>Am 10.04.25 um 17:02 schrieb Peter Heitzer:
>> Hermann Riemann <nospam.ng@hermann-riemann.de> 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.
>> Siehe dazu PEP238 https://peps.python.org/pep-0238/

>Floor ist floating point.
>-1, 2, // soll alles integer sein.

>-1//2==-(1//2)
>liefert False

>Sieht mir ungewohnt aus.
floor(0.5) (1//2) ist halt 0 und floor(-0.5) (-1//2) ergibt -1.



-- 
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de

[toc] | [prev] | [next] | [standalone]


#6292

FromPatrick Rudin <taxi_bs@gmx.ch>
Date2025-04-11 13:18 +0200
Message-ID<m5sc3bFmaakU2@mid.individual.net>
In reply to#6290
Hermann Riemann wrote:
> -1//2==-(1//2)
> liefert False

Nicht in R.

 > floor(-1/2) == floor (-(1/2))
[1] TRUE

Eigentlich auch nicht überraschend:

 > -1/2
[1] -0.5

 > -(1/2)
[1] -0.5

Aber in R ist ja auch der Slice-Operator nicht kaputt...


SCNR

Patrick

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.python


csiph-web