Dezimal in Bruch in Objective-C umwandeln?

9

Ich versuche alles nach dem Komma zu nehmen und es als Bruch darzustellen. Konnte nicht viel für Ziel-c finden, wie man das erreicht. Ich verwende double für meine Formatierung von Variablen, nicht sicher, ob das wichtig wäre oder nicht. So formatiere ich für die Ausgabe meiner Antwort: [theTextField setText:[NSString stringWithFormat:@"%f''", (myVariable)]]; Dies zeigt ok als Dezimalzahl an, würde es aber wirklich als ganze Zahl und Bruch (dh.) 7 1/2 statt 7.5000 mögen. Vielen Dank im Voraus!

Aktualisierung: 13.05.2011

Nun, ich habe es 7 1/16 angezeigt, aber etwas mit der Mathematik ist aus. Weil es sich nicht von 1/16 ändert, auch nicht durch Änderung der Werte, die geteilt werden. Wo gehe ich hier falsch? Wenn jemand das richtig machen kann, bitte posten Sie vollständig, wie es gemacht wird. Dies ist etwas, das einfach sein sollte, aber nicht und viel zu zeitaufwendig ist. Bitte posten Sie vollständig, wie es gemacht wird. Vielen Dank.

Aktualisierung: Wenn diese Antwort für Sie nicht funktioniert, schauen Sie sich meinen anderen Beitrag an, das funktioniert! Dezimalstellen in Brüche umrechnen

    
Jason 05.04.2011, 13:21
quelle

2 Antworten

8

Objective-C verwendet für praktisch alle primitiven mathematischen Operationen reines C.

Dies gesagt werden Sie alle notwendigen Informationen (zusammen mit C-Code) in den Antworten dieser anderen Frage finden:

Wie werden Floats in für Menschen lesbare Brüche konvertiert?

(Insbesondere diese Antwort mit aktuellem C-Code .)

Hier ist ein kurzer c-Funktions-Wrapper des Algorithmus:

%Vor%

Nennt es so:

%Vor%

Druckt dies:

%Vor%

Sehen wir uns nun an, wie wir unseren neu erstellten Bruchteil in ein Textfeld aussortieren:

%Vor%

Erwartete Ausgabe: "7 1/2" , tatsächliche Ausgabe: "7 499/999"
Für einige Informationen darüber, warum dies passieren kann, siehe diese Antwort auf eine verwandte Frage: Wie man Floats in für Menschen lesbare Brüche konvertiert?

    
Regexident 05.04.2011, 13:29
quelle
6

Ich habe Code geschrieben, um den Dezimalwert in den niedrigsten möglichen Bruch umzuwandeln. Das funktioniert ganz gut.

%Vor%

Aufrufmethode als:

%Vor%     
JJQ 09.11.2011 03:45
quelle