In Swift, wie zeige ich einen Prozentwert aufgerundet oder nach unten ohne Nachkommastellen

8

Ich dachte, das wäre ziemlich geradlinig, aber ich kann mich nicht damit abfinden oder eine bestehende Frage finden, die meine Situation abdeckt.

Ursprünglich habe ich eine Anzahl von Variablen wie folgt eingerichtet:

%Vor%

Das hat alle meine Werte in Ordnung gebracht, aber ich hatte Probleme mit dem Prozentsatz.

Meine Grundformel für den Prozentsatz lautet:

%Vor%

Ich konnte dies jedoch nicht anzeigen lassen, wenn der Wert in einem Text-Label verwendet wurde.

Nach einigen Nachforschungen änderte ich stattdessen meine Variablen:

%Vor%

Und immer noch die gleiche Formel für den Prozentsatz verwendet:

%Vor%

Obwohl dies okay angezeigt wurde, wollte ich nicht alle Dezimalstellen. Nach etwas mehr Recherche stieß ich in einer anderen Frage auf eine Erweiterung und passte sie für meine Anwendung an. Meine Erweiterung ist:

%Vor%

Und ich habe versucht, die Erweiterung wie folgt zu verwenden:

%Vor%

Das Endergebnis ist, dass dies ziemlich nah an dem ist, was ich möchte. Es zeigt jedoch immer noch den Prozentwert auf 1 Dezimalstelle an. (Übrigens, es ist nicht korrekt - was ich meine ist, dass wenn der Punktestand 1 ist und die Anzahl der Fragen 3 ist, der obige Code den Prozentsatz als 33.0 statt 33.3 anzeigt, aber ich schweife ab)

Was ich eigentlich möchte, ist der Wert, der auf die nächste ganze Zahl auf- oder abgerundet wird, bevor der Wert angezeigt wird. Mit anderen Worten, was ich will ist

  • Wenn der Wert 33,3 beträgt, wird auf 33 abgerundet und als 33
  • angezeigt
  • wenn der Wert 66,6 beträgt, um auf 67 zu runden und als 67
  • angezeigt zu werden

Das heißt, ich möchte keine Dezimalstellen im angezeigten Ergebnis haben. Momentan läuft es richtig auf und ab, aber am Ende wird ".0" angezeigt. Wenn dies nicht möglich ist, möchte ich, dass es korrekt auf einer Dezimalstelle angezeigt wird.

Ich bin neu im Programmieren und Swift ist die erste Sprache, die ich versuche zu lernen, also ist das vielleicht nur ein Anfängerfehler, aber ich kann wirklich nicht finden, was ich falsch mache.

Wie bekomme ich das zum Laufen?

    
Monomeeth 18.02.2016, 23:12
quelle

5 Antworten

9

Sie können die integrierte Rundenfunktion verwenden und zu einem Int. Cast

umwandeln %Vor%

Wenn Sie möchten, dass eine Erweiterungsmethode eine Zeichenfolge zurückgibt, können Sie Folgendes verwenden:

%Vor%     
totiG 18.02.2016 23:15
quelle
1

Sie können den Formatspezifizierer von NSString verwenden und ihn Ihrem Double hinzufügen Erweiterung als Funktionen.

%Vor%     
Christian Abella 18.02.2016 23:29
quelle
1

In reiner Ganzzahlarithmetik

%Vor%

würde den Trick machen.

Wie funktioniert das? Berechnen des Prozentsatzes als

%Vor%

schneidet das Ergebnis der Division gegen Null ab. Für das gewünschte Rundungsverhalten müssten wir berechnen

%Vor%

in Gleitkommaarithmetik und dann das Ergebnis auf eine Ganzzahl abschneiden. Kombinierende Begriffe geben den Ausdruck

%Vor%

welches, wenn es in Integer-Arithmetik berechnet wird, das korrekte Ergebnis liefert.

    
Martin R 18.02.2016 23:19
quelle
0

Sie können die Runde selbst machen. Ich gehe von einer Eins-zu-eins-Bewertung aus. Ich habe einige Nummern angeschlossen, damit du sie auf einen Spielplatz einfügen kannst. Sie können den Wert in "If left" ändern, wenn Sie möchten. .51 usw. Nur weil das IRS Sie bei 50 Cent abrundet, bedeutet das nicht, dass Sie müssen.

%Vor%     
Mountain Man 19.02.2016 02:40
quelle
0

Sie können diese Erweiterung verwenden:

%Vor%     
user5735326 07.03.2016 02:12
quelle

Tags und Links