Uytab
Uytab

Reputation: 93

C++: Solution to this floating point error problem?

This is an example of my code:

float a = 0.f;
float b = 5.f;
float increment = 0.1f;
while(a != b)
    a+=increment;

This will result in an infinite loop. Is there any solutions to it, or the only way to solve this is to set a tolerance?

Upvotes: 0

Views: 136

Answers (1)

MikeCAT
MikeCAT

Reputation: 75062

Avoid using floating-point calculation when possible. In this case you can treat with the numbers as integer by multiplying them by 10 and dividing by 10 in the end.

float a, b, increment;
int a_i = 0;
int b_i = 50;
int increment_i = 1;
while(a_i != b_i)
    a_i+=increment_i;
a = a_i / 10.f,
b = b_i / 10.f;
increment = increment_i / 10.f;

Upvotes: 6

Related Questions