I have created a for loop in which I calculate a few values.
for i in 1...100{
let xValue = i/100
print(xValue) // returns 0 every time except when i == 100
}
This is a recreation of a part of that for loop. Why is it that I do not get the right value for 'xValue'?
For info I have also tried the following:
let xValue: Float = Float(i/100)
And that doesn't work either, despite me being very specific. I must have forgotten something basic about these arithmetic operators in swift.
CodePudding user response:
When you divide an Int
by an Int
, the result will be rounded down. Use a floating point type, like Double
or Float
for more precision.
for i in 1...100 {
let xValue = Float(i)/100
print(xValue)
}
To address your attempted solution - when you do:
let xValue: Float = Float(i/100)
The Int
result is first computed in i/100
(and rounded down to 0) then you are casting to a Float
.
Therefore, we cast i
to a Float
before the division so the result is computed as a Float
.
CodePudding user response:
Since i
and 100
are both integer values, /
will do integer division and the result will be truncated to 0.
Even when you do let xValue: Float = Float(i/100)
, the result of division inside the parentheses is already truncated to 0 before the value can be converted to a Float.
Convert i
to a floating-point value before dividing to prevent the result from being truncated.
for i in 1...100{
let xValue = Float(i)/100
print(xValue)
}