Muss 3,15 sein, wenn auf zwei Dezimalstellen gerundet wird.
Matt Le Fleur
Ich dachte, das OP wollte nur auf zwei Dezimalstellen runden und nach Bedarf auf- oder abrunden. Ich habe gerade einen Kommentar hinzugefügt, der um Klarstellung bittet.
JAL
Hallo Jal, danke, ich habe deine Antwort verwendet, die mit einer geringfügigen Änderung wie folgt funktioniert hat: - _ = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)! railRatioLabelField.text! = String (Format: "% .2f", currentRatio)
Del Hinds
2
Diese Antwort bezieht sich auf die Frage: "So zeigen Sie Double mit zwei Ziffern in der Textbezeichnung an" oder "... als Zeichenfolge". Diese Antwort beantwortet nicht die Frage "Double auf 2 Dezimalstellen aufrunden"
Mnl
@ JAL ich brauche olny .5 oder 0 nach Punkt Zum Beispiel. Wenn wir 23,4 haben, sollte es 23,5 geben und wenn 23,8 sollte es 24,0 sein
Guru
29
(Swift 4.2 Xcode 11)
Einfach zu verwendende Erweiterung: -
Hallo, ich verstehe nicht, wie Sie Ihre Berechnung durchführen, um eine bestimmte Anzahl von Dezimalstellen zurückzugeben. Was ist, wenn ich möchte, dass 3 Dezimalstellen zurückgegeben werden?
Sipho Koza
@SiphoKoza multiplizieren Sie es einfach mit 1000 und dividieren Sie dann durch 1000
Chetan Rajagiri
Dies ist nicht wirklich die "richtige" Antwort, da die Zahl intern im Gleitkomma gespeichert wird, mit der Basis 2, und Sie versuchen, eine Basis 10-Zahl darzustellen. Für einige Zahlen gibt es keine genaue Darstellung, und Sie erhalten zu viele Ziffern, wenn Sie den Wert drucken. Die richtige Antwort sollte eine Zeichenfolge zurückgeben, keine Double oder Float.
Victor Engel
@levan Es funktioniert auch für Null, stellen Sie nur sicher, dass es ein Doppel ist
Chetan Rajagiri
1
Tolle Antwort, ich denke, dass dies die akzeptierte sein sollte.
ih orihpt
13
Erwägen Sie die Verwendung von NumberFormatter für diesen Zweck. Es bietet mehr Flexibilität, wenn Sie das Prozentzeichen des Verhältnisses drucken möchten oder wenn Sie Dinge wie Währung und große Zahlen haben.
Auf diese Weise geben Sie immer dann ein, wenn Sie einen Wert mit 2 Dezimalstellen erfassen möchten
twoDecimals (' Ihre Nummer hier ')
...
Simples!
Ps Sie können auch festlegen, dass ein Float- Wert oder ein beliebiger Wert zurückgegeben wird, indem Sie ihn nach der String-Konvertierung wie folgt erneut konvertieren:
currentRatio
auf zwei Dezimalstellen runden oder immer aufrunden? Beispiel: Wollen Sie 3.141 -> 3.14 oder 3.141 -> 3.14?Antworten:
Verwenden Sie eine Formatzeichenfolge, um auf zwei Dezimalstellen aufzurunden und die folgende
double
zu konvertierenString
:let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)! railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Beispiel:
let myDouble = 3.141 let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Wenn Sie Ihre letzte Dezimalstelle aufrunden möchten, können Sie Folgendes tun (danke Phoen1xUK):
let myDouble = 3.141 let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
quelle
(Swift 4.2 Xcode 11) Einfach zu verwendende Erweiterung: -
extension Double { func round(to places: Int) -> Double { let divisor = pow(10.0, Double(places)) return (self * divisor).rounded() / divisor } }
Verwenden:-
if let distanceDb = Double(strDistance) { cell.lblDistance.text = "\(distanceDb.round(to:2)) km" }
quelle
func round(to places: Int) -> Double {
Aktualisiert auf SWIFT 4 und die richtige Antwort auf die Frage
Wenn Sie auf 2 Dezimalstellen aufrunden möchten, sollten Sie mit 100 multiplizieren, dann abrunden und dann durch 100 dividieren
var x = 1.5657676754 var y = (x*100).rounded()/100 print(y) // 1.57
quelle
Erwägen Sie die Verwendung von NumberFormatter für diesen Zweck. Es bietet mehr Flexibilität, wenn Sie das Prozentzeichen des Verhältnisses drucken möchten oder wenn Sie Dinge wie Währung und große Zahlen haben.
let amount = 10.000001 let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.maximumFractionDigits = 2 let formattedAmount = formatter.string(from: amount as NSNumber)! print(formattedAmount) // 10
quelle
Wenn wir die obige Antwort hinzufügen und Double mehrmals formatieren möchten, können wir die Protokollerweiterung von Double wie folgt verwenden:
extension Double { var dollarString:String { return String(format: "$%.2f", self) } } let a = 45.666 print(a.dollarString) //will print "$45.67"
quelle
Der Code für bestimmte Ziffern nach Dezimalstellen lautet:
var roundedString = String(format: "%.2f", currentRatio)
Hier weist% .2f den Swift an, diese Zahl auf 2 Dezimalstellen zu runden.
quelle
@Rounded , Ein schneller 5.1 Property Wrapper Beispiel:
struct GameResult { @Rounded(rule: NSDecimalNumber.RoundingMode.up,scale: 4) var score: Decimal } var result = GameResult() result.score = 3.14159265358979 print(result.score) // 3.1416
quelle
String(format: "%.2f", Double(round(1000*34.578)/1000))
Ausgabe: 34,58
quelle
Nur eine kurze Antwort für Noobs wie mich:
Sie können die anderen Antworten sehr einfach umsetzbar machen, indem Sie eine Funktion mit einer Ausgabe verwenden . Z.B
func twoDecimals(number: Float) -> String{ return String(format: "%.2f", number) }
Auf diese Weise geben Sie immer dann ein, wenn Sie einen Wert mit 2 Dezimalstellen erfassen möchten
twoDecimals (' Ihre Nummer hier ')
...
Simples!
Ps Sie können auch festlegen, dass ein Float- Wert oder ein beliebiger Wert zurückgegeben wird, indem Sie ihn nach der String-Konvertierung wie folgt erneut konvertieren:
func twoDecimals(number: Float) -> Float{ let stringValue = String(format: "%.2f", number) return Float(stringValue)! }
Hoffentlich hilft das.
quelle
Wenn Sie es 234.545332233 geben, erhalten Sie 234.54
let textData = Double(myTextField.text!)! let text = String(format: "%.2f", arguments: [textData]) mylabel.text = text
quelle
Nur eine einzige Codezeile:
let obj = self.arrayResult[indexPath.row] let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
quelle