Як округлити currentRatio
до двох знаків після коми?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Як округлити currentRatio
до двох знаків після коми?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Відповіді:
Використовуйте рядок формату округлити до двох знаків після коми і перетворити double
до String
:
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Приклад:
let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Якщо ви хочете округлити свій останній десятковий знак, ви можете зробити щось подібне (спасибі Phoen1xUK):
let myDouble = 3.141
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
(Swift 4.2 Xcode 11) Просте у використанні розширення: -
extension Double {
func round(to places: Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
Використання: -
if let distanceDb = Double(strDistance) {
cell.lblDistance.text = "\(distanceDb.round(to:2)) km"
}
func round(to places: Int) -> Double {
Оновлено до SWIFT 4 та відповідна відповідь на запитання
Якщо ви хочете округлити до 2 знаків після коми, потрібно помножити на 100, потім округлити його, а потім поділити на 100
var x = 1.5657676754
var y = (x*100).rounded()/100
print(y) // 1.57
Розгляньте можливість використання NumberFormatter для цієї мети, це забезпечує більшу гнучкість, якщо ви хочете надрукувати знак відсотка співвідношення або якщо у вас є такі речі, як валюта та великі цифри.
let amount = 10.000001
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
let formattedAmount = formatter.string(from: amount as NSNumber)!
print(formattedAmount) // 10
Додаючи до відповіді вище, якщо ми хочемо форматувати Double кілька разів, ми можемо використовувати розширення протоколу Double, як показано нижче:
extension Double {
var dollarString:String {
return String(format: "$%.2f", self)
}
}
let a = 45.666
print(a.dollarString) //will print "$45.67"
Лише швидка подальша відповідь для таких небіг, як я:
Ви можете зробити інші відповіді надпростими для реалізації, використовуючи функцію з результатом . Напр
func twoDecimals(number: Float) -> String{
return String(format: "%.2f", number)
}
Таким чином, коли ви хочете отримати значення до 2 знаків після коми, ви просто вводите
twoDecimals (' Ваш номер тут ')
...
Прості!
Ps Ви також можете змусити його повернути значення Float або що завгодно, перетворивши його знову після перетворення рядка наступним чином:
func twoDecimals(number: Float) -> Float{
let stringValue = String(format: "%.2f", number)
return Float(stringValue)!
}
Сподіваюся, що це допомагає.
Просто один рядок коду:
let obj = self.arrayResult[indexPath.row]
let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
currentRatio
до двох знаків після коми або завжди округлити вгору? Наприклад: ви хочете 3.141 -> 3.14 або 3.141 -> 3.14?