2016-01-21 3 views
18

Wie richte ich currentRatio auf zwei Dezimalstellen zusammen?Aufrunden doppelt auf 2 Dezimalstellen

let currentRatio = Double (rxCurrentTextField.text!)!/Double (txCurrentTextField.text!)! 
railRatioLabelField.text! = "\(currentRatio)" 
+0

wollen Sie gleich um 'currentRatio' auf zwei Dezimalstellen oder immer aufrunden? Bsp .: Wollen Sie 3.141 -> 3.14 oder 3.141 -> 3.14? – JAL

+0

Hallo JAL, ich möchte 3.149 als 3.15 anzeigen. 3.141 sollte jedoch 3.14 anzeigen. Danke –

+0

Siehe den ersten Teil meiner Antwort für die richtige Rundung. – JAL

Antwort

54

eine Format-String verwenden, auf zwei Dezimalstellen abzurunden und wandeln die double auf ein String:

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 aufrunden Dezimalstelle, Sie könnten so etwas tun (danke Phoen1xUK):

let myDouble = 3.141 
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15" 
+0

Muss 3,15 sein, wenn auf zwei Dezimalstellen gerundet wird. –

+0

Ich dachte, das OP wollte nur auf zwei Dezimalstellen runden, wenn nötig, auf- oder abrunden. Ich habe nur einen Kommentar hinzugefügt, der um eine Klarstellung bittet. – JAL

+0

Hi Jal, Danke, ich habe deine Antwort benutzt, die mit einer kleinen Änderung wie folgt funktioniert: - _ = Double (rxCurrentTextField.text!)!/Double (txCurrentTextField.text!)! railRatioLabelField.text! = String (Format: "% .2f", currentRatio) –

1

oben Antwort hinzufügen, wenn wir Doppelmehrmal formatiert werden sollen, wir Protokollerweiterung von Doppeln wie unten verwenden:

extension Double { 
    var dollarString:String { 
     return String(format: "$%.2f", self) 
    } 
} 

let a = 45.666 

print(a.dollarString) //will print "$45.67" 
+0

Sollte nicht gedruckt werden (a.dollarString)? – glm4

0

für diesen Zweck verwendet NumberFormatter Betrachten bietet es mehr Flexibilität, wenn Sie drucken mögen das Prozentzeichen des Verhältnisses 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 
0
String(format: "%.2f", Double(round(1000*34.578)/1000)) 

Ausgang: 34.58

0

Der Code für bestimmte Stellen nach Dezimalstellen ist:

var roundedString = String(format: "%.2f", currentRatio) 

Hier ist das% .2f die rasche sagt diese Zahl gerundet auf 2 Dezimalstellen zu machen .

0

Wenn Sie 2 aufrunden wollen Orte dezimal für die Frage zu SWIFT 4 und die richtige Antwort aktualisiert Sie mit 100 dann um ihn aus und teilen sich dann um 100

var x = 1.5657676754 
var y = (x*100).rounded()/100 
print(y) // 1.57 
multiplizieren sollte
0

nur einzelne Codezeile:

let obj = self.arrayResult[indexPath.row] 
let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])