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...
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;
}