Just messing around with some code in my game and getting some strange results, so to investigate I simplified the code and STILL got weird results.
value# = 1000
For loop = 1 to 25
print value#
if value# >=0.1
value# = value# - 0.1
end if
Next
Now I'd expect for each loop, I'd get values like 1000, 999.9, 999.8 and so on...
Can someone explain why its goes...
998.1
998.0
997.901
997.801
It's a little scary I admit, but it is not uncommon. I tested your code on this pc and it does the same. All I can say is that maybe the Blitz products can not be relied upon for 100% accurate floating point maths. However as I mainly use floats for 3D stuff, it doesn't tend to need to be 100% accurate so I'm happy to let little things like this go.
inaccuracies in floating point math
and
Blitz likes to only retain the six most significant digits when converting a float to a string or integer (which it's doing when you print it)
are there any commands that can round the number from 997.901 to 997.9 ?
Notice what happens if you do this instead:
value# = 1000
For loop = 1 To 25
Print value#
If value# >=0.1
;value# = value# - 0.1
value# = value# * 10
value# = value# - 1
value# = value# / 10.0
End If
Next
WaitKey
Use ints and divide by 10.
does divide by 10 use much processor time ?