Find out what type my class is being converted to for comparisons

Matthew Rushworth nope at nopey.nope
Tue Oct 18 19:13:01 UTC 2022


On Tuesday, 18 October 2022 at 18:59:37 UTC, rikki cattermole 
wrote:
> Well its not a type system issue.
>
> Making u = n, that'll returns true.
>
> So the problem almost certainly lies with IEEE-754.
> They are horrible to compare (float/double).
>
> Unfortunately you are stuck calling functions like isClose to 
> compare.
>
> https://dlang.org/phobos/std_math_operations.html#.isClose
>

Hi Rikki, thanks for the rapid reply.

I'm not so sure it isn't a type issue, tbh. The only reason being 
that the opEquals() works whenever I call it directly (ignoring 
the comparison of proximity to a value for the moment)
but doesn't work when I use "=="

stripped down to just the two lines that are causing issues:

```
//assert(opEquals(u,n)); // this works fine
assert(u == n); // this fails. Why?
```

I guess to put it more bluntly, I should ask "why is opEquals 
working when I call it directly, but when I try to use the 
equality check, which should be CALLING opEquals, it doesn't 
appear to do so?"


More information about the Digitalmars-d-learn mailing list