double runden

  • Themenstarter Themenstarter schlydi
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

schlydi

Gast
Hallo,

ich habe das Problem, daß ich einen double-Wert in einen Bruch umwandeln will, mein Ansatz war, daß ich irgendwie die Zahlen vor dem Komma und nach dem Komma auslese, dann die Nachkommastellen bestimme, in eine Zehnerpotenz umwandle, dann die zahl hinter dem Komma(Zähler) und die Zehnerpotenz (Nenner) kürze, dann die Zahl vor dem Komma mal den gekürzten Nenner nehme und dann zu dem gekürzten Zähler addiere - geht bestimmt auch einfacher, nur fehlt mir dazu das Wissen... fürs Küezen muß ich mir noch was einfallen lassen, aber mein Problem erstmal ist, daß die double-Werte nicht wirklich dem entsprechen, was ich im Sinn habe (12.22569 gibt im Laufe des Codes irgendwann 12.225689999999...). Jetzt hatte ich die Idee, die Zahl wieder zurück zu runden, eben auf die schon bestimmte Anzahl der Nachkommastellen, klappt nur leider nicht so ganz...

Code:
public static double getBruch(double zahl1)  {
  int nachkommastellen = (String.valueOf(zahl1).length()-String.valueOf(zahl1).indexOf('.')-1);
  int nenner = 1;
  for (int i=1; i <= nachkommastellen; i++)  {
    nenner = nenner * 10;
  }
  
  String runden = Integer.toString(nenner);
  runden = runden.substring(1);
  runden = "0." + runden;
  System.out.println(runden);
  
  double test = zahl1 - (int)zahl1;
  DecimalFormat df = new DecimalFormat(runden);
  test = df.format(test);
  
  String versuch = Double.toString(test);
  versuch = versuch.substring(2);
  double neu = Double.parseDouble(versuch);
  
  return zahl1;
}
 
Hallo,

wie soll denn letztendlich dein Ergebnis aussehen?

Und vor allem machst Du mit dem an die Methode übergebene Parameter "zahl1" nix (also keine erneute Zuweisung!) und gibst sie wieder als "return zahl1" zurück.... 🙂


Gruß, Tom.
 
Und woher weißt du das du die Zahl Runden darfst und sie nicht etwa so eingegeben wurde... verstehe nicht recht was du möchtest.

Aber zu Dez->Bruch: Das ist einfach: 3,2=32/10, 0,001=1/1000, 4,55=455/100.

MfG,
Hilefoks
 
Also ich will damit einen Taschenrechner bedienen, für den ich wurzeln ziehen will, am besten nicht nur mit ganzen Zahlen - dafür benötige ich eben brüche, die ich runden will - aber ich denke, der knoten in meinem hirn hat sich gelöst, geht ja doch einfacher mit mathe 6. klasse :wink: ist nur so lange her...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben