Округлить до двух знаков после запятой
Как округлить 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"
}