如何舍入currentRatio到小数点后两位?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Run Code Online (Sandbox Code Playgroud)
JAL*_*JAL 112
使用格式字符串将最多两位小数舍入并转换double为String:
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)
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)
考虑使用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)
(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)
小数点后特定数字的代码为:
var roundedString = String(format: "%.2f", currentRatio)
Run Code Online (Sandbox Code Playgroud)
这里 %.2f 告诉 swift 将这个数字四舍五入到小数点后两位。
@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)
| 归档时间: |
|
| 查看次数: |
67464 次 |
| 最近记录: |