Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #6286 > unrolled thread
| Started by | Hermann Riemann <nospam.ng@hermann-riemann.de> |
|---|---|
| First post | 2025-04-10 16:50 +0200 |
| Last post | 2025-04-11 13:18 +0200 |
| Articles | 7 — 4 participants |
Back to article view | Back to de.comp.lang.python
-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
| From | Hermann Riemann <nospam.ng@hermann-riemann.de> |
|---|---|
| Date | 2025-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]
| From | "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> |
|---|---|
| Date | 2025-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]
| From | "Peter J. Holzer" <hjp-usenet4@hjp.at> |
|---|---|
| Date | 2025-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]
| From | "Peter J. Holzer" <hjp-usenet4@hjp.at> |
|---|---|
| Date | 2025-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]
| From | Hermann Riemann <nospam.ng@hermann-riemann.de> |
|---|---|
| Date | 2025-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]
| From | "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> |
|---|---|
| Date | 2025-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]
| From | Patrick Rudin <taxi_bs@gmx.ch> |
|---|---|
| Date | 2025-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