向上舍入到小数点后两位

Del*_*nds 47 double swift

如何舍入currentRatio到小数点后两位?

let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Run Code Online (Sandbox Code Playgroud)

JAL*_*JAL 112

使用格式字符串将最多两位小数舍入并转换doubleString:

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 = String(format: "%.2f", myDouble) // "3.14"
Run Code Online (Sandbox Code Playgroud)

如果你想要整理你的最后一个小数位,你可以做这样的事情(感谢Phoen1xUK):

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

  • 这是对以下问题的回答:“如何在文本标签中以两位数字显示 Double”或“...作为字符串”,此答案并未回答“将双精度舍入到小数点后两位”的问题 (2认同)

Che*_*iri 15

已更新至SWIFT 4以及该问题的正确答案

如果你想要舍入到2位小数,你应该乘以100然后将其四舍五入然后除以100

var x = 1.5657676754 
var y = (x*100).rounded()/100
print(y)  // 1.57 
Run Code Online (Sandbox Code Playgroud)


Dav*_*e Y 14

对于像我这样的菜鸟来说,这是一个快速的后续答案:

您可以通过使用带有输出的函数使其他答案非常容易实现。例如

  func twoDecimals(number: Float) -> String{
    return String(format: "%.2f", number)
}
Run Code Online (Sandbox Code Playgroud)

这样,每当您想要获取小数点后两位的值时,您只需键入

twoDecimals ('这里是你的数字')

...

简单!

Ps 您还可以使其返回Float值或任何您想要的值,然后在 String 转换后再次转换它,如下所示:

 func twoDecimals(number: Float) -> Float{
    let stringValue = String(format: "%.2f", number)
    return Float(stringValue)!
}
Run Code Online (Sandbox Code Playgroud)

希望有帮助。


Ank*_*arg 10

如果我们要多次格式化Double,可以添加上面的答案,我们可以使用Double的协议扩展,如下所示:

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

let a = 45.666

print(a.dollarString) //will print "$45.67"
Run Code Online (Sandbox Code Playgroud)


Mic*_*aev 9

考虑使用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
Run Code Online (Sandbox Code Playgroud)


Meh*_*hul 8

(Swift 4.2 Xcode 10) 易于使用的扩展程序:-

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

使用:-

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


Ram*_*ami 5

小数点后特定数字的代码为:

var roundedString = String(format: "%.2f", currentRatio)
Run Code Online (Sandbox Code Playgroud)

这里 %.2f 告诉 swift 将这个数字四舍五入到小数点后两位。


Abh*_*man 5

@Rounded,一个 swift 5.1 属性包装器示例:

struct GameResult {
    @Rounded(rule: NSDecimalNumber.RoundingMode.up,scale: 4)
    var score: Decimal
}

var result = GameResult()
result.score = 3.14159265358979
print(result.score) // 3.1416
Run Code Online (Sandbox Code Playgroud)