Never seen anything like this. Simple while loop:
t_end = 100.0
t_step= 0.1
time = 0
while time<=t_end:
time+=t_step
print time
Last 3 printed values:
...
99.9
100.0
100.1
Looks right to me.
Now, I change t_step to 0.01:
t_end = 100.0
t_step= 0.01
time = 0
while time<=t_end:
time+=t_step
print time
Last 3 printed values:
...
99.98
99.99
100.0
Question: Why it doesn’t go for the final loop when time = t_end =100.0 ?
What is the alternative solution?
Because this 100.0 (result of a sum) can be bigger than 100.0 you write by hand. You should not compare float numbers for equality…
You should read this:
What Every Computer Scientist Should Know About Floating-Point Arithmetic
Possible solution:
So the last element will be:
100.01000000001426