Question: Consider the following C++ code:

```
double someZero = 0;
std::cout << 0 - someZero << '\n';   // prints 0
std::cout << -someZero << std::endl; // prints -0

```

The question arises: what is negative zero good for, and should it be defensively avoided (i.e. use subtraction instead of smacking a minus onto a variable)?

Answer: 
There are only two real use-cases that I can see:

1. You want to show that a value is negative but very very small (perhaps infinitessimal), i.e. too small to represent as a float or double.
2. You are working with math that only allows negatives, but still want to display zero. There are a few cases in physics, complex numbers and number theory where this can be useful.

For the mostpart, it's not useful and should be avoided.

You may also want to take a look at this question: [Is there a negative zero?](https://stackoverflow.com/questions/4199808/is-there-a-negative-zero) and the [IEEE 754 spec](http://en.wikipedia.org/wiki/IEEE_754-2008 "IEEE 754 float spec") for floating point.
Negative zero has for example some use when handling complex numbers...

In everyday use one should mostly avoid the negative zero.

Some links with information regarding background/uses/pitfalls of "negative zero":  

* <http://en.wikipedia.org/wiki/Signed_zero>
* <http://en.wikipedia.org/wiki/Floating_point#Signed_zero>
* <http://en.wikipedia.org/wiki/Branch_cut>
* <http://connect.microsoft.com/VisualStudio/feedback/details/344366/negative-zero-behavior-between-c-and-c-code-is-different>
* <http://connect.microsoft.com/VisualStudio/feedback/details/292276/in-vs2005-c-zero-reported-as-negative-zero-for-double-type>
* [C++ ceil and negative zero](https://stackoverflow.com/questions/5986875/c-ceil-and-negative-zero)