Issue with small floating point numbers

Berni44 someone at somemail.com
Thu May 13 08:04:46 UTC 2021


On Thursday, 13 May 2021 at 03:03:37 UTC, Tim wrote:
> ```
> unittest{
>     auto p = rotate2D([0.0, 10.0], PI_2);
>     assert(p == [-10.0, 0.0]);
> }
> ```

I suggest

```
unittest
{
     auto p = rotate2D([0.0, 10.0], PI_2);
     assert(isClose(p[0], -10.0));
     assert(isClose(p[1], 0.0, 0.0, 1e-6));
}
```

In the second test, the value is compared against zero, which is 
somewhat special - you need to specify an acceptable distance 
from zero to get it right.

You could also improve your result by making the `phi` a `double` 
value. In this case you can replace the `1e-6` above by `1e-15` 
which is much closer to zero.



More information about the Digitalmars-d-learn mailing list