Modulo rechnen

Status
Nicht offen für weitere Antworten.
H

Han

Gast
Hallo...ich wollte fragen ob ich einen Fehler mache oder ob Java nicht richtig modulo rechnen kann.


Denn -1%4 muss eigentlich 3 sein.
Bei JAVA ist es aber wieder -1....

Code:
int i = -1;
     
int e = i%4;  //Warum -1?

mfg,
Hannes
 
H

Han

Gast
Mag schon sein aber ich habe meinen Zahlenbereich auf 0,..,4 eingeschränkt und jeder Taschenrechner liefert mir bei dieser Rechnung 3...nur halt JAVA nicht...na ja muss ich halt eine Methode programmieren dass JAVA das weiß...

mfg,
Hannes
 
G

Gast

Gast
Hallo,
was Java da macht ist schon richtig:
-1 modulo 4
Wie oft passt die 4 in -1? Richtig, gar nicht, also bleibt als Rest -1.

LG
Gabi
 

byte

Top Contributor
finds auch etwas merkwürdig, dass java die negativen werte liefert, denn bei -4, -8 usw. ists dann wieder 0. ???:L
 

byte

Top Contributor
der windows taschenrechner liefert übrigens auch negative werte. ;)

also wenn du im Z4 rechnen willst, dann musste dir wohl ne methode schreiben, die das ganze normalisiert und solange 4 draufaddiert, bis das ergebnis zwischen 0...3 liegt.
 
G

Guest

Gast
Hallo....ich weiß ja dass die negativen Werte auch stimmen (oder nicht?)

Brauch aber nur die für mich ?normale? Schreibweise...also -1%4 = 3

Code:
Hab auch schon eine Methode geschrieben:

	static int mod(int i,int n){
		
		if(i >= 0){
			return i%n;
		}else{
			return n + i;	
		}
			
	}

mfg,
Hannes
 

AlArenal

Top Contributor
byto hat gesagt.:
finds auch etwas merkwürdig, dass java die negativen werte liefert, denn bei -4, -8 usw. ists dann wieder 0. ???:L

Modulo liefert den Rest der ganzzahligen Division. Von daher ist -1%4 == -1 (weil -1/4 geht ganzzahlig nicht, Rest -1) und -4%4 == 0 (denn -4/4 = 1, Rest 0).
 
H

Han

Gast
OK...stimmt danke soweit hab ich weider nicht gedacht.....

mfg,
Hannes
 
S

stev.glasow

Gast
Anonymous hat gesagt.:
Hallo....ich weiß ja dass die negativen Werte auch stimmen (oder nicht?)

Brauch aber nur die für mich ?normale? Schreibweise...also -1%4 = 3

Es sind beide richtige, diese -1%4 = 3 Variante kenne ich nur von Python. PHP und C händeln das wie Java.
Mach einfach a % b + a < 0?b:0
[edit] ne irgendwie funktioniert das nich ???:L
[edit]
Bleiglanz hat gesagt.:
schreib einfach
Code:
(i%4 + 4)%4

das ist immer > 0
ah ok.
Stand da nicht vorher nur
Code:
i%4 + 4
?
 
B

Beni

Gast
Han hat gesagt.:
Hallo...ich wollte fragen ob ich einen Fehler mache oder ob Java nicht richtig modulo rechnen kann.
Java kann nicht richtig rechnen (aber viele andere Sprachen auch nicht), so einfach ist das.

Die Definition des "echten" Modulos würde tatsächlich keine negativen Zahlen erlauben; wieso das eingebaut wurde, k.A.
 

byte

Top Contributor
AlArenal hat gesagt.:
byto hat gesagt.:
finds auch etwas merkwürdig, dass java die negativen werte liefert, denn bei -4, -8 usw. ists dann wieder 0. ???:L

Modulo liefert den Rest der ganzzahligen Division. Von daher ist -1%4 == -1 (weil -1/4 geht ganzzahlig nicht, Rest -1) und -4%4 == 0 (denn -4/4 = 1, Rest 0).

aber mathematisch gesehen befindest du dich bei x mod 4 im körper Z4, das heisst es gibt nur die zahlen 0...3. -1 ist in diesem fall kongruent zu 3 im Z4. das war es, worauf der threadersteller hinaus wollte.
 
S

stev.glasow

Gast
Beni hat gesagt.:
Han hat gesagt.:
Hallo...ich wollte fragen ob ich einen Fehler mache oder ob Java nicht richtig modulo rechnen kann.
Java kann nicht richtig rechnen (aber viele andere Sprachen auch nicht), so einfach ist das.

Die Definition des "echten" Modulos würde tatsächlich keine negativen Zahlen erlauben; wieso das eingebaut wurde, k.A.

Was heißt "keine negativen Zahlen erlauben"?
Würde das so verstehen dass wie beim Würzelziehen keine negativen Werte übergeben werden dürfen.
 

AlArenal

Top Contributor
Drum gibts für die streng gläubigen Coder auch spezielle Mathematik-Libs ;)

Modulo operations (JLS §15.17.3)

* the modulo operator % is also called the remainder operator as it returns the remainder, or fractional part, of a division operation
* x % y is equivalent to x - ((int) (x/y) * y)
* can be used with both integer and floating-point numbers
* following rules apply as to the sign of the result:
o result is negative if the divdend is negative
o result is positive if the divdend is positive
o if the divisor is zero, a runtime ArithmeticException is thrown
o if the dividend is a floating-point value and the divisor is zero, no exception is thrown and the result is NaN

5 % 3 = 2
-5 % 3 = -2
5.0 % 3 = 2.0
-5.0 % 3 = -2.0
5.0 % 0 = NaN // not a number

Machts denn static double Math.IEEEremainder( double Dividend, double Divisor ) richtig?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Modulo rechnen Java Basics - Anfänger-Themen 3
Safado modulo rechnen Java Basics - Anfänger-Themen 5
R Rechenoperationen mit Modulo Java Basics - Anfänger-Themen 2
B Modulo-Operator anhand eines Beispieles erklären Java Basics - Anfänger-Themen 7
s.marcii Modulo in der Variable einsetzen - ist das möglich? Java Basics - Anfänger-Themen 2
A Modulo operation Java Basics - Anfänger-Themen 5
A Char und modulo Java Basics - Anfänger-Themen 8
C Verständnisfrage zu Modulo Java Basics - Anfänger-Themen 6
T Modulo / Pow berechnen Java Basics - Anfänger-Themen 4
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
krgewb Best Practice Modulo Java Basics - Anfänger-Themen 4
L Rekursion Modulo Java Basics - Anfänger-Themen 7
W Input/Output Modulo Wert speichern und ausgeben lassen Java Basics - Anfänger-Themen 3
S Operatoren Modulo programmieren Java Basics - Anfänger-Themen 10
V Andere Schreibweise für % Modulo Java Basics - Anfänger-Themen 9
N Methoden Modulo Operator Java Basics - Anfänger-Themen 1
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
L Modulo Reste abspeichern und wiedergeben ? Java Basics - Anfänger-Themen 4
Z 10er und 100er Stelle durch Modulo Java Basics - Anfänger-Themen 2
H Buch: Java lernen mit BlueJ Modulo-Operator Java Basics - Anfänger-Themen 16
J for-schleife + modulo Java Basics - Anfänger-Themen 2
E Problem mit modulo Rechnung Java Basics - Anfänger-Themen 8
S Modulo Operator Java Basics - Anfänger-Themen 8
R Merkwürdige Modulo Berechnung Java Basics - Anfänger-Themen 7
E Potenz mit Modulo (über for-Schleife) berechnen Java Basics - Anfänger-Themen 8
J modulo Java Basics - Anfänger-Themen 13
R Ersatz für Modulo Operator Java Basics - Anfänger-Themen 8
H Typ short: Exponent und Modulo Java Basics - Anfänger-Themen 3
calzone Problem einer Gleichung mit Modulo Java Basics - Anfänger-Themen 5
A Problem mit modulo Java Basics - Anfänger-Themen 8
J statt modulo "if-Anweisung" Java Basics - Anfänger-Themen 9
J Modulo berechnen Java Basics - Anfänger-Themen 11
S Modulo Java Basics - Anfänger-Themen 10
D BigInteger potenzieren und anschließend Modulo Java Basics - Anfänger-Themen 7
G SHA (byte array) per modulo hashen Java Basics - Anfänger-Themen 6
G Modulo Java Basics - Anfänger-Themen 4
J Modulo-Operator rechnet falsch Java Basics - Anfänger-Themen 2
S Modulo-Operator Java Basics - Anfänger-Themen 5
G Modulo Division funzt nicht Java Basics - Anfänger-Themen 3
G BigInteger und Modulo Java Basics - Anfänger-Themen 3
B Modulo (%) und == Java Basics - Anfänger-Themen 8
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
Liroyd Methode mit Objektvariabel rechnen? Java Basics - Anfänger-Themen 6
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
Zeppi Geteilt rechnen Java Basics - Anfänger-Themen 2
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
L Mit Zahlen im String rechnen Java Basics - Anfänger-Themen 19
L Datentypen Rechnen und abrunden mit double Java Basics - Anfänger-Themen 7
S Hamster Simulator rechnen lernen Parameter int Java Basics - Anfänger-Themen 6
D Operatoren Mit Objekten rechnen Java Basics - Anfänger-Themen 7
P Rechnen mit Brüchen - objektorientierte Programmierung Java Basics - Anfänger-Themen 18
S Rechnen mit MaxValue Java Basics - Anfänger-Themen 7
L Rechnen mit Objekten Java Basics - Anfänger-Themen 3
W Erste Schritte Rechnen mit Schleifen? Denkanstoß gesucht Java Basics - Anfänger-Themen 15
W Seltames Problem bei Rechnen mit BigIntegers Java Basics - Anfänger-Themen 2
A Rechnen mit Text und Zahl Java Basics - Anfänger-Themen 4
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
S Dezimalzahlen rechnen Java Basics - Anfänger-Themen 3
kilopack15 Rechnen mit großen Zahlen Java Basics - Anfänger-Themen 6
D Rechnen mit numerischen Datentyp Frage Java Basics - Anfänger-Themen 16
E Best Practice Exaktes Rechnen mit (Pseudo-)Rationalen/Realen Zahlen. Operations Zuweisung für (eigene) Klassen Java Basics - Anfänger-Themen 3
1 Mit Java Rechnen Java Basics - Anfänger-Themen 10
T Einstieg in "grafische Progammierung" + Rechnen in Flussdiagramm Java Basics - Anfänger-Themen 2
W Variablen float rundet beim Bruch rechnen Java Basics - Anfänger-Themen 3
N Oracle SQL mit Zwischenergebnis rechnen Java Basics - Anfänger-Themen 2
Y Variable Menge von Objekten erzeugen und mit ihren Attributen rechnen Java Basics - Anfänger-Themen 7
S Double mithilfe eines Scanners so einlesen, dass ich damit rechnen kann Java Basics - Anfänger-Themen 4
J Char-Rechnen Java Basics - Anfänger-Themen 8
A Rechnen mit Set/Get? Java Basics - Anfänger-Themen 2
Z Erste Schritte Instanzmethoden Rechnen (Bruch) Java Basics - Anfänger-Themen 18
M Mit Werten aus Arrays in anderen Methoden rechnen? Java Basics - Anfänger-Themen 3
J Mit Datum rechnen Java Basics - Anfänger-Themen 11
F Erste Schritte [GUI] Dual in Dezimal rechnen Java Basics - Anfänger-Themen 5
D Erste Schritte Rechnen mit Brüchen Java Basics - Anfänger-Themen 13
D rechnen mit Stunden und Minuten Java Basics - Anfänger-Themen 14
N mit Werten aus einer mysql datenbank in java rechnen Java Basics - Anfänger-Themen 17
G Rechnen mit Long Variablen Java Basics - Anfänger-Themen 4
N Probleme beim Rechnen mit Integer und double Java Basics - Anfänger-Themen 4
W Variablen Rechnen mit "char" Java Basics - Anfänger-Themen 2
Joew0815 Compiler-Fehler Unexpected Type - Problem mit Variablen rechnen Java Basics - Anfänger-Themen 7
F Werte aus Tabelle vergleichen/rechnen Java Basics - Anfänger-Themen 5
C Mit Potenzen rechnen "Problem" Java Basics - Anfänger-Themen 3
M Mit Array rechnen Java Basics - Anfänger-Themen 9
T Rechnen in Arrays Java Basics - Anfänger-Themen 11
B von Ergebniss weiter rechnen Java Basics - Anfänger-Themen 3
S Rechnen mit Datum bzw. Uhrzeit Java Basics - Anfänger-Themen 3
S Datentypen Operatoren und Ausdrücke (formel richtig rechnen) Java Basics - Anfänger-Themen 8
N Mit long rechnen Java Basics - Anfänger-Themen 2
K Übungsblatt 13 Aufgabe 6 (Rechnen) Java Basics - Anfänger-Themen 12
C Mit Gleitkommazahlen rechnen Java Basics - Anfänger-Themen 20
T Rechnen mit Operatoren Java Basics - Anfänger-Themen 2
W Mit (char) rechnen Java Basics - Anfänger-Themen 3
F Mit Arrays rechnen Java Basics - Anfänger-Themen 12
H Datentypen Rechnen mit signed Byte-Array - unsinged byte Java Basics - Anfänger-Themen 3
B mit benutzereingaben rechnen Java Basics - Anfänger-Themen 4
L Bruch rechnen Java Basics - Anfänger-Themen 29
B mit Datum rechnen Java Basics - Anfänger-Themen 10
D Rechnen mit int Array Java Basics - Anfänger-Themen 9
M mit Uhrzeit rechnen Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben