||I'm not sure what the point of your code is, or how it's different from if (d == 0.0) (which will work even if d is -0.0). It does correctly check if d is exactly equal to zero, but it has nothing to do with approximately. Perhaps dskloet is right that it would leave you with an "approximately equal" if it's within 2-53, d == 0.0 would only return true if you were within something like 2-1000 (don't remember exactly what it is).
In reality, if you want to do an approximate zero check, you'd do either:
if (d < epsilon && d > -epsilon)
if (abs(d) < epsilon)
where epsilon is some insanely small number :-)