Как округлить до 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 и правильный ответ на вопрос
Если вы хотите округлить до двух знаков после запятой, умножьте на 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)
}
Таким образом, всякий раз, когда вы хотите получить значение до двух знаков после запятой, вы просто набираете
twoDecimals ('Здесь твой номер ')
...
Просто!
Ps. Вы также можете заставить его возвращать значение с плавающей запятой или что угодно, затем снова преобразовав его после преобразования String следующим образом:
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?