Swift - 增加浮动值

Swift -Increase Float Value

我有一个 UISlider,其最小值为 0,最大值为 1。

停止时可以是任何数字,例如

3.2990444444444442

在这种情况下,我想将最后一个数字增加到 3,如

3.2990444444444443

但是因为它是一个滑块,在它停止之前我永远不会知道确切的数字,所以数字可能是

0.0019881635 我想增加到 0.00198816360.9991.0

我该怎么做?

如果不清楚我要做什么,无论滑块十进制值的最后一位是多少,我都需要将其增加1

我遇到的很多答案都是用另一种语言,而不是 Swift

考虑这个解决方案:

extension Float {
func decimalCount() -> Int {
    if self == Float(Int(self)) {
        return 0
    }

    let integerString = String(Int(self))
    let doubleString = String(self)
    let decimalCount = doubleString.count - integerString.count - 1

    return decimalCount
}

mutating func increaseLast(){
    let powerfactor = pow(10, Float(decimalCount()))
    self = (self * powerfactor + 1) / powerfactor
    
 }
}

我没有对此进行彻底测试,但它应该可以工作。得到函数 decimalcount

用法示例:

let array: [Float] = [0.999, 0.0004, 0.004, 0.009]

array.forEach{
  var a = [=11=]
  a.increaseLast()
  print([=11=])
  print(a)
}

打印:

0.999
1.0
0.0004
0.0005
0.004
0.005
0.009
0.01

nextUp return 下一个 Float 值大于给定值。

请注意,如果将滑块设置为 1,它将 return 一个大于 1 的值,因此您可能需要限制该值。