It's in the nature of finite precision.
Theres not much you can do about it.
there a basicly two kinds of datatypes.
1. integral
2. float
integral being, int, char, byte etc
floats being, float, double
integral is always precise, floating values are more obscure
What numerical libraries do is to check for equality within a tolerance like
float one = 0;
float two = 0.0000001
//wrong
if(one!=two)
puts("not same");
//right
#define tole 0.000001
if(fabs(one-two)>tole)
puts("not same")
If you need it depends on your context,
if you just want the value, then you shouldn't care.
But if your program has a branchpoint depending on this value,
you should go the "within tolerance" way.
on a sidenote.
floats are only precise to the 7th or 8th digit,
whereas double are to the 23thd
good luck