what is the best way to avoid negative zero in output?

Ali picture Ali · Sep 21, 2012 · Viewed 7.1k times · Source

As in this question is said, there is some differences between negative and positive zero in floating point numbers. I know it's because of some important reasons. what I want to know is a short code to avoid negative zero in output.

for example in the following code:

cout << fixed << setprecision(3);
cout << (-0.0001) << endl;

"-0.000" is printed. but I want "0.000".

Note all other negative numbers (e.g. -0.001) should still be printed with the minus sign preceding them, so simply * -1 will not work.

Answer

Mahmoud Aladdin picture Mahmoud Aladdin · Sep 21, 2012

Try depending on your precision.

cout << ((abs(ans) < 0.0005)? 0.000: ans) << endl;