Swift - 增加浮动值
Swift -Increase Float Value
我有一个 UISlider,其最小值为 0,最大值为 1。
停止时可以是任何数字,例如
3.2990444444444442
在这种情况下,我想将最后一个数字增加到 3,如
3.2990444444444443
但是因为它是一个滑块,在它停止之前我永远不会知道确切的数字,所以数字可能是
0.0019881635
我想增加到 0.0019881636
或 0.999
到 1.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 的值,因此您可能需要限制该值。
我有一个 UISlider,其最小值为 0,最大值为 1。
停止时可以是任何数字,例如
3.2990444444444442
在这种情况下,我想将最后一个数字增加到 3,如
3.2990444444444443
但是因为它是一个滑块,在它停止之前我永远不会知道确切的数字,所以数字可能是
0.0019881635
我想增加到 0.0019881636
或 0.999
到 1.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 的值,因此您可能需要限制该值。