Dlang tour - Unittesting example

ag0aep6g anonymous at example.com
Tue Oct 2 13:29:46 UTC 2018


On 10/02/2018 03:24 PM, Basile B. wrote:
> The problem is the NaN madness.
> Since several values are NaN there's this strange stuff:
> 
> void main()
> {
>      import std.stdio;
>      import std.math : isNaN;
>      double d;
> 
>      writeln(d.init);    // nan
>      writeln(d);         // nan
>      writeln(d.nan);     // nan
> 
>      assert(d.isNaN);
>      assert(d == d.nan);  // fails
>      assert(d == d.init); // fails
> }
> 
> the last assert is just crazy.

NaN simply isn't equal to itself. Has nothing to do with there being 
multiple NaNs. `d == d`, `double.nan == double.nan`, `double.init == 
double.init` are all false, too.


More information about the Digitalmars-d-learn mailing list