Ich dachte, das wäre ziemlich einfach, aber ich kann nicht scheinen, es auszuarbeiten oder eine vorhandene Frage zu finden, die meine Situation abdeckt.In Swift, wie ich einen Prozentwert auf- oder abgerundet ohne Dezimalstellen anzeigen
Ursprünglich stellte ich eine Reihe von Variablen wie folgt zusammen:
var score :Int! = 0
var totalquestionsasked :Int! = 0
var percentagecorrect :Int! = 0
Dies habe alle meine Werte Berechnung in Ordnung, aber ich lief in Probleme mit dem Prozentsatz.
Meine Grundformel für den Prozentsatz ist:
percentagecorrect = score/totalquestionsasked * 100
Allerdings konnte ich das nicht angezeigt bekommen, wenn der Wert in einer Textbeschriftung verwendet wird.
Also nach einigen Recherchen habe ich dazu meine Variablen geändert statt:
var score :Double = 0.0
var totalquestionsasked :Double = 0.0
var percentagecorrect :Double = 0.0
und verwendet immer noch die gleiche Formel für den Prozentsatz:
percentagecorrect = score/totalquestionsasked * 100
Doch während dies in Ordnung angezeigt, ich didn Ich will 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:
extension Double {
var roundTo0f: Double {return Double(round(1*self)/1) }
var roundTo1f: Double {return Double(round(10*self)/10) }
var roundTo2f: Double {return Double(round(100*self)/100) }
var roundTo3f: Double {return Double(round(1000*self)/1000) }
}
Und ich habe versucht, die Erweiterung wie folgt verwendet:
percentagecorrect = score/totalquestionsasked * 100
let percentagevalue: Double = percentagecorrect.roundTo0f
labelPercent.text = "\(percentagevalue)"
Das Endergebnis ist, dass dies ziemlich nah dran ist, was ich will. Es zeigt jedoch immer noch den Prozentwert auf 1 Dezimalstelle an. (Nebenbei, es ist nicht genau - was ich meine ist, dass, wenn die Partitur 1 ist und die Anzahl der Fragen ist gefragt 3, der obige Code den Prozentsatz als 33,0 statt 33,3 zeigt, aber ich schweife ab)
Was ich eigentlich will, ist der Wert, der auf die nächste ganze Zahl auf- oder abgerundet wird, bevor der Wert angezeigt wird. Mit anderen Worten will, was ich ist
- , wenn der Wert 33,3 für sie ist bis 33 und Anzeige abrunden als 33
- , wenn der Wert 66,6 für sie ist bis 67 und Anzeige aufrunden als 67
Das ist ich will keine Dezimalstellen im angezeigten Ergebnis. 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 in der Programmierung und Swift ist die erste Sprache, die ich versuche zu lernen, also vielleicht ist dies nur ein Anfängerfehler, aber ich kann wirklich nicht finden, was ich falsch mache.
Wie bekomme ich das zur Arbeit?
Das ist alles für mich sehr neu, so dass es mir dauerte eine Weile, aber ich endlich diese zu arbeiten. Vielen Dank! – Monomeeth