<div dir="ltr">In floating point value comparison, +0.0 is equal to -0.0.<div><div><br></div><div>    auto x = +0.0;</div><div>    auto y = -0.0;</div><div>    assert(x == y);</div></div><div><br></div><div>Kenji Hara</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/4/23 Mehrdad <span dir="ltr"><<a href="mailto:wfunction@hotmail.com" target="_blank">wfunction@hotmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Tuesday, 23 April 2013 at 04:33:24 UTC, Chris Cain wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
On Tuesday, 23 April 2013 at 04:27:45 UTC, Mehrdad wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
?!??!<br>
</blockquote>
<br></div><div class="im">
opEquals by default is simply a bit-level value check.<br>
</div></blockquote>
<br>
<br>
<br>
In fact, it's _doubly_ broken...<br>
<br>
        import std.stdio;<br>
        struct S { float d; }<br>
        void main()<br>
        {<br>
            writeln(+0.0);<br>
            writeln(-0.0);<br>
            writeln(S(+0.0) == S(-0.0));<br>
        }<br>
<br>
<br>
Output:<br>
        0<br>
        -0<br>
        true<br>
</blockquote></div><br></div>