Округлить до двух знаков после запятой

Как округлить currentRatio до двух знаков после запятой?

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

Ответы

Ответ 1

Используйте строку формата для округления до двух десятичных знаков и преобразуйте 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"

Ответ 2

Обновлен до SWIFT 4 и правильный ответ на вопрос

Если вы хотите округлить до 2 десятичных знаков, вы должны умножить на 100, затем округлить и затем разделить на 100

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

Ответ 3

Добавление к предыдущему ответу, если мы хотим отформатировать Double несколько раз, мы можем использовать расширение протокола Double, как показано ниже:

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

let a = 45.666

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

Ответ 4

Рассмотрите возможность использования 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

Ответ 5

Код для конкретных цифр после десятичных знаков:

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

Здесь%.2f говорит стремительному сделать это число округленным до 2 десятичных знаков.

Ответ 6

String(format: "%.2f", Double(round(1000*34.578)/1000))

Выход: 34.58

Ответ 7

Просто одна строка кода:

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

Ответ 8

если вы дадите ему 234,545332233, это даст вам 234,54

let textData = Double(myTextField.text!)!
let text = String(format: "%.2f", arguments: [textData])
mylabel.text = text

Ответ 9

(Swift 4.2 Xcode 10) Простое в использовании расширение: -

extension Double {
    func roundTo(places:Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return (self * divisor).rounded() / divisor
    }
}

Использование: -

if let distanceDb = Double(strDistance) {
   cell.lblDistance.text = "\(distanceDb.roundTo(places:2)) km"
}