Swift中如何实现将数值向上取整至最近的0.5小数?
实现向上取整至最近0.5小数的方案
当然可以实现!你需要的是将bits * 1.5的计算结果向上取整到最近的0.5的倍数,这里有两种简洁的Swift实现方式:
1. 直接内联计算
利用Swift的ceil(_:)函数结合简单的数学转换就能搞定,原理很直观:
- 先把计算后的数值乘以2,这样所有0.5的倍数都会变成整数
- 用
ceil()向上取整到最近的整数 - 最后除以2还原回0.5的倍数
代码示例:
bits = ceil(bits * 1.5 * 2) / 2
验证一下你的场景:
- 初始值
bits = 1,首次计算:1 * 1.5 = 1.5→1.5 * 2 = 3→ceil(3) = 3→3 / 2 = 1.5(符合预期) - 第二次计算:
1.5 * 1.5 = 2.25→2.25 * 2 = 4.5→ceil(4.5) = 5→5 / 2 = 2.5(正好是你想要的结果)
2. 封装成可复用函数
如果需要在多处使用这个逻辑,把它封装成一个辅助函数会让代码更清晰易读:
func roundUpToNearestHalf(_ value: Double) -> Double { return ceil(value * 2) / 2 } // 使用方式 bits = roundUpToNearestHalf(bits * 1.5)
补充说明
如果你的bits是Float类型,只需要把函数里的Double换成Float,并使用fceilf(_:)函数即可:
func roundUpToNearestHalf(_ value: Float) -> Float { return fceilf(value * 2) / 2 }
内容的提问来源于stack exchange,提问作者Trgrit Tjforce
相关产品推荐
相关产品推荐

