我想绕到最接近的一半Double.例如,如果数字是3.76我希望它舍入到4.另一方面,如果数字是3.74我希望它舍入到3.5.
我想出了这段代码:
extension Double {
func roundToClosestHalf() -> Double {
let upperLimit = ceil(self)
let difference = upperLimit - self
if difference <= 0.25 {
return ceil(self)
} else if difference > 0.25 && difference < 0.75 {
return upperLimit - 0.5
} else {
return floor(self)
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更有效/更好的方法来做到这一点?
let x = 3.21.roundToClosestHalf() // 3
Run Code Online (Sandbox Code Playgroud)
Rob*_*ier 10
映射N - > N*2,舍入,映射N - > N/2.
extension Double{
func roundToClosestHalf() -> Double {
return (self*2).rounded() / 2
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |