[LC++]a bit [OT]: float-dificulty
Chris Vine
chris at cvine.freeserve.co.uk
Mon Jul 24 02:19:32 UTC 2006
On Saturday 22 July 2006 15:19, Julien Claassen wrote:
> Hi everyone!
> I try to increase/decrase a floating-point value by a fixed amount like
> this:
> if ((its_value + incrase_val) <= its_max)
> {
> its_value += increase_va;
> }
> else
> // some error
> But it doesn't work properly. its_max is set to 1.0 and it increases only
> up to 0.9 and if I set the value to 1.0 it only decreases up to 0.1 not
> 0.0. I know there's floating-point inprecision to take into account. But
> how to avoid this?
> Anyone any idea? I am grateful for everything...
> Kindest regards
You have given the answer. Floating point values cannot be compared in the
way that, say, integer values can be compared. In floating point
representation, 0.2 + 0.3 does not necessarily compare true to 0.5.
If you are incrementing in steps of 0.1 and want to increment up to a value of
1.0 (that is, stop a loop incrementing to 1.1), then you can compare against
a value of 1.01 instead of a value of 1.0.
Chris
More information about the tuxCPProgramming
mailing list