在Swift中将数字四舍五入至小数点后两位

Ham*_*mza 4 ios swift4

我正在尝试将数字值转换为两位小数。但是当我将其转换为0.00时。数字是这个0.24612035420731018。当获得其.2f值时,它将显示0.00。我试过的代码是这样的,

 let  digit = FindResturantSerivce.instance.FindResModelInstance[indexPath.row].distance
    let text = String(format: "%.2f", arguments: [digit])
    print(text)
Run Code Online (Sandbox Code Playgroud)

dre*_*ter 20

如果您想真正舍入数字,而不仅仅是将其格式化为用于显示目的,则我更喜欢一些通用的东西:

extension Double {
    func rounded(digits: Int) -> Double {
        let multiplier = pow(10.0, Double(digits))
        return (self * multiplier).rounded() / multiplier
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以执行以下操作:

let foo = 3.14159.rounded(digits: 3) // 3.142
Run Code Online (Sandbox Code Playgroud)

  • 这个答案需要更多的支持! (2认同)

Md *_*vez 11

使用格式字符串将其舍入到小数点后两位,并将双精度数转换为字符串:

let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Run Code Online (Sandbox Code Playgroud)

例:

let myDouble = 3.141
let doubleStr = Double(String(format: "%.2f", myDouble)) // 3.14

let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Run Code Online (Sandbox Code Playgroud)

如果要舍入最后一位小数,可以执行以下操作:

let myDouble = 3.141
let doubleStr = Double(String(format: "%.2f", ceil(myDouble*100)/100)) // 3.15

let myDouble = 3.141
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
Run Code Online (Sandbox Code Playgroud)