Konvertieren eines Floats in eine String-Bruchdarstellung

8

In Java versuche ich einen Weg zu finden, eine Gleitkommazahl in eine Bruchzahl zu konvertieren. Zum Beispiel:

%Vor%

Irgendwelche Ideen, wie man das in Java macht?

    
Icemanind 11.05.2011, 18:08
quelle

6 Antworten

9

Der einfachste Ansatz könnte sein, Versuch und Irrtum zu verwenden.

%Vor%

druckt

%Vor%     
Peter Lawrey 11.05.2011, 18:33
quelle
1

Schauen Sie in Kettenbrüche. Dies ermöglicht Ihnen, Nenner und Bruch innerhalb einer gegebenen Genauigkeit zu bestimmen.

Für Pi kannst du 22/7 oder 355/113 bekommen, abhängig davon, wann du aufhören willst.

    
quelle
0

Dies könnte hilfreich sein:

Ссылка

Sonst müssten Sie Convert () sagen, wie weit Sie die Dinge nehmen wollen. Vielleicht ein maximaler reduzierter Demonator oder so etwas. Auf diese Weise erhalten Sie "1 1/3" für beide der ersten zwei Beispiele, die Sie oben haben, anstatt "1 33333/100000" für die erste und "1 333/1000" für die zweite.

    
John 11.05.2011 18:14
quelle
0

Extrahiere den Bruchteil der Zahl (zum Beispiel ((int) 0.5 + 1) - 0.5 , dann dividiere eins durch das Ergebnis ( 1 / 0.5 ). Du bekommst den Nenner des Bruches. Dann wirf den float auf einen int und du werde den ganzzahligen Teil erhalten und dann beide verketten.

Es ist nur eine einfache Lösung und funktioniert nur, wenn der Zähler des Bruches 1 ist.

%Vor%     
Gabriel 11.05.2011 18:14
quelle
0

Angenommen, Sie haben "0,1234567", dann zählen Sie, wie viele Zahlen nach dem Dezimalpunkt (das ist 7). dann multipliziere die Zahl mit 10 ^ 7, jetzt hast du "1234567".

teile 1234567 über 10 ^ 7. Dann vereinfache den Bruch mit dem GCD der beiden Zahlen.

%Vor%     
Eng.Fouad 11.05.2011 18:37
quelle
0

Die FOR-Schleife wurde modifiziert, um die Schleife zu unterbrechen, wenn der beste Nenner bereits identifiziert wurde.

if (Fehler2 == 0) Pause;

%Vor%     
Christopher Guray 27.08.2013 02:02
quelle