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: 
I'm making a measuring app, and the -0 is very useful for mixed numbers (such as separating into feet and inches).

Imagine that we have a variable "length" that we're trying to separate into "feet" and "inches".

(This is java code, but the same idea is true for C++).

```
feet = Math.signum(length) * Math.floor(Math.abs(length / 12));
// could also do feet = length>0 ? Math.floor(length / 12) : Math.ceil(length / 12)
inches = Math.abs(length) % 12;

```

If the length is between -1 feet and 0 feet, we'd want it to say -0 for the feet so we know it's negative.
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)