Jak zaokrąglić currentRatio
do dwóch miejsc po przecinku?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Jak zaokrąglić currentRatio
do dwóch miejsc po przecinku?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Odpowiedzi:
Użyj ciąg formatu zaokrąglić w górę do dwóch miejsc po przecinku i przekonwertować double
Do String
:
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Przykład:
let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Jeśli chcesz zaokrąglić ostatnie miejsce po przecinku, możesz zrobić coś takiego (dzięki Phoen1xUK):
let myDouble = 3.141
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
(Swift 4.2 Xcode 11) Proste w użyciu rozszerzenie: -
extension Double {
func round(to places: Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
Posługiwać się:-
if let distanceDb = Double(strDistance) {
cell.lblDistance.text = "\(distanceDb.round(to:2)) km"
}
func round(to places: Int) -> Double {
Zaktualizowano do SWIFT 4 i poprawną odpowiedź na pytanie
Jeśli chcesz zaokrąglić w górę do 2 miejsc po przecinku, pomnóż przez 100, zaokrąglij i podziel przez 100
var x = 1.5657676754
var y = (x*100).rounded()/100
print(y) // 1.57
Rozważ użycie NumberFormatter w tym celu, zapewnia większą elastyczność, jeśli chcesz wydrukować znak procentu współczynnika lub jeśli masz takie rzeczy, jak waluta i duże liczby.
let amount = 10.000001
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
let formattedAmount = formatter.string(from: amount as NSNumber)!
print(formattedAmount) // 10
Dodając do powyższej odpowiedzi, jeśli chcemy wielokrotnie formatować Double, możemy użyć rozszerzenia protokołu Double jak poniżej:
extension Double {
var dollarString:String {
return String(format: "$%.2f", self)
}
}
let a = 45.666
print(a.dollarString) //will print "$45.67"
String(format: "%.2f", Double(round(1000*34.578)/1000))
Wyjście: 34,58
Tylko krótka odpowiedź dla noobów takich jak ja:
Możesz sprawić, że inne odpowiedzi będą bardzo łatwe do zaimplementowania, używając funkcji z wyjściem . Na przykład
func twoDecimals(number: Float) -> String{
return String(format: "%.2f", number)
}
W ten sposób, gdy chcesz pobrać wartość do 2 miejsc po przecinku, po prostu wpiszesz
twoDecimals (' Twój numer tutaj ')
...
Simples!
Ps Możesz również sprawić, by zwracał wartość Float lub cokolwiek chcesz, konwertując ją ponownie po konwersji typu String w następujący sposób:
func twoDecimals(number: Float) -> Float{
let stringValue = String(format: "%.2f", number)
return Float(stringValue)!
}
Mam nadzieję, że to pomoże.
jeśli dasz 234,545332233, otrzymasz 234,54
let textData = Double(myTextField.text!)!
let text = String(format: "%.2f", arguments: [textData])
mylabel.text = text
Tylko jedna linia kodu:
let obj = self.arrayResult[indexPath.row]
let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
currentRatio
do dwóch miejsc po przecinku, czy zawsze w górę? Np .: czy chcesz 3,141 -> 3,14 czy 3,141 -> 3,14?