Bruchrechnung in Java

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Ich denke, Du gehst die Sache ungeschickt an und ich vermute, Du willst am Schluss auch wieder einen Bruch haben. Du solltest also meiner Meinung nach die Zähler und Nenner einzeln verarbeiten und den Bruch dann ggf. noch kürzen. Dann hast Du alle Werte, um das Ergebnis auch wieder als Bruch darzustellen. So wie Du es momentan angehst, arbeitest Du mit Ganzzahlwerten, die von Java auch nicht implizit in Fließkommazahlen umgewandelt werden. Deshalb Dein Fehler beim Ergebnis. Aber wie gesagt, Du kannst schon mit Ganzzahlwerten arbeiten, wenn Du Zähler und Nenner getrennt voneinander verarbeitest.


MyEternalSmile 
Beitragsersteller
 28.11.2011, 19:38

Getrennte Behandlung von Zähler und Nenner führte zum Erfolg. Vielen Dank :)

0

Die Ausgangswerte sind alles int-Werte. Wenn du aber int's dividierst, wird der Kommaanteil immer abgeschnitten, d.h. aus 1/3 wird 0 und aus 5/3 wird 1 und nicht 1.66666, die 1 als Ergebnis stimmt also, bringt dir aber natürlich in deinem Fall gar nichts.

Eine Möglichkeit wäre die Übergabeparameter als double's zu erwarten.

Außerdem: Dir ist bewusst, dass, wenn überhaupt, eine Kommazahl (in deinem Beispiel also 2.166667 zurückgegeben wird und nicht direkt 13/6 ?!


MyEternalSmile 
Beitragsersteller
 28.11.2011, 17:56

Danke für die Antwort. Ja double erscheint mir einleuchtend. Ist es denn grundsätzliche richtig so vorzugehen oder muss man etwas baachten wenn man das Ergebnis als Bruch, der auf dem kelinsten gemeinsamen Hauptnenner basiert, ahben will?

0
MarkGreene  28.11.2011, 18:06
@MyEternalSmile

Wenn du es auch wieder als Bruch haben willst, dann bringt dir auch der Ansatz mit double-Werten nichts, denn da wird auch nur eine Kommazahl daraus.

Du musst den Nenner und Zähler einzeln (da natürlich als int's) speichern und bearbeiten, dann kannst du auch einen Bruch zurückgeben. Das einfachste, schnellste und flexibelste wird wohl sein, eine eigene Bruch-Klasse zu schreiben und dann damit zu arbeiten.

Eine Vorlage findest du hier: http://www.mp.haw-hamburg.de/pers/Haidan/java/java/java_bruch.htm

Natürlich gibt es auch eine Möglichkeit, dass du die beiden Werte als int's in einem Array speicherst und dann Arrays übergibst und auch zurückgibst, aber das ist meiner Meinung nach, nicht so schön.

0