Issue
I have a UISlider that has min value of 0 and a max value of 1.
When it stops it can be any number such as
3.2990444444444442
In this situation I want to increase the last number to a 3 as in
3.2990444444444443
But since it’s a slider, I’ll never know the exact number until it stops, so the number might be
0.0019881635
at which I would want to increase to 0.0019881636
or 0.999
to 1.0
How can I do this?
If it’s not clear what I want to do, no matter what the last digit is in the slider decimal value, I need to increase it by 1
A lot of the answers that I came across are in another language, not Swift
Solution
Consider this solution:
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
}
}
I didn“t test this thoroughly but it should work. Got the function decimalcount
from this so answer
Usage example:
let array: [Float] = [0.999, 0.0004, 0.004, 0.009]
array.forEach{
var a = $0
a.increaseLast()
print($0)
print(a)
}
prints:
0.999
1.0
0.0004
0.0005
0.004
0.005
0.009
0.01
Answered By – burnsi
Answer Checked By – Marilyn (BugsFixing Volunteer)