hello. i want to compare the equallity of two doubles a nd b.
A friend told me i should not test if(a==b)
but if(a-b<1e-9) i.e. a-b<10^-9
Is this the right way to do it? also if i wanted to compare floats or long doubles what is the threshold(a-b<threshold).
First of all most decimal numbers translates into infinite binary number. Like 1/3 is 0.33333.... in decimal.
Second: Computer cannot store infinite numbers. for example we have decimal number, which can store only two digitsafter period, then 1/3 will become 0.33.
Now what happens if we take our example decimal computer and try to compare (1/3)*3 == 1;
Mathematically it should be true, but what will be actual results?
1/3 = 0.33; 0.33 * 3 = 0.99; 0.99 == 1 is false.
The same applies to real computers, save for binary format.