そういえばIEEE754的には別物だったなあと。
#include <iostream> int main(){ volatile double x1 = -0.0; volatile double x2 = x1 + 0.0; std::cout << 1.0 / x1 << std::endl; //-inf std::cout << 1.0 / x2 << std::endl; // inf }
+0.0とー0.0の演算についてはWikipediaにまとまっている。
普通の比較演算子(==)では同じ値になるからめんどくさい。