Variable als Nachkommazahl übergeben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Variable als Nachkommazahl übergeben

    Hallo zusammen :)

    Ich hätte eine Frage und wäre sehr sehr dankbar wenn ihr mir weiterhelfen könntet. Das ist bestimmt nur ein Anfängerfehler, aber aus Fehlern lernt man :)


    Mein Fall:
    Ich möchte gerne die Nachkommastellen ändern, diese sollen aber aus einem String geladen werden.

    Quellcode

    1. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    2. NSString *f1 = [defaults objectForKey:@"point"];
    3. NSString *calc = [[NSString alloc] initWithFormat:@"%1.2f", calc1, f1];



    Möchte ich statt der zwei die Variable übergeben und ändern, also mit %@ passiert überhaupt nichts.



    Vielen Dank für eure Hilfe!
    Grüße Stefan
  • Wenn Du aus einem String eine Dezimalzahl mit einer variablen Anzahl von Nachkommastellen einlesen willst, brauchst Du diesen Zauber nicht. Willst Du allerdings eine exakte Anzahl Dezimalen erzwingen, würde ich es nach dem Einlesen mittels Arithmetik machen (also z. B. prüfen, ob der hundertfache Wert gleich der Ganzzahl desselben ist).

    Oder ich verstehe Dich auch miss, dann präzisiere bitte etwas...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Hallo, sorry falls ich mich zu ungenau ausgedrückt habe.

    Ich meinte es so:
    Man kann in der App eine Nachkommazahl zwischen eins und fünf wählen, diese wird gespeichert.
    Danach soll bei der Berechnung, die Nachkommazahl angewendet werden.

    Der NSString mit zwei Nachkommastellen.
    NSString *calc = [[NSString alloc] initWithFormat:@"%1.2f", calc1];

    Die zwei (2) soll aber durch die gespeicherte ersetzt werden, also mit dem NSString f1.

    NSString *calc = [[NSString alloc] initWithFormat:@"%1.%@f", calc1, f1];

    Aber wenn ich mit %@ versuche den NSString zu übergeben, übernimmt er es mir nicht mit den Nachkommastellen.
    Grüße Stefan
  • Die Formatanweisung kennt m. W. keine variable Anzahl an Nachkommastellen, aber wäre es nicht sinnvoller, die Variable intern auf entsprechende Stellen zu runden und dann einfach ohne explizite Angabe von Dezimalen auszugeben? Oder, je nach Anforderung, auch nur mit reduzieren Nachkommastellen zu rechnen?

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • gritsch schrieb:

    das mag der compiler aber eigentlich nicht weil er es nicht prüfen kann. außerdem haben wir europäer ja keine freude mit dem punkt als komma...

    Keine Frage, dass die Lösung suboptimal ist und für Formatierung NSNumberFormater zu nutzen ist. Ich habe mich nur über mich selber gewundert, dass ich nicht auf die dynamische Erstellung eines Formatstrings kam...

    Ohne Worte, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • stefan_13_ schrieb:

    Man kann in der App eine Nachkommazahl zwischen eins und fünf wählen, diese wird gespeichert.
    Danach soll bei der Berechnung, die Nachkommazahl angewendet werden.

    Willst du die Anzahl der Nachkommastellen für die Berechnung verwenden oder nur für die Darstellung? Das sind zwei sehr unterschiedliche Sachen. Falls du wirklich damit rechnen willst, solltest du NSDecimalNumber verwenden und dort die Anzahl der Nachkommastellen als Behavior angeben. Dann erübrigt sich auch das Darstellungsproblem.
    Multigrad - 360°-Produktfotografie für den Mac