Details
Description
The following assertions should all pass; the third fails.
assert !(Double.NaN == 0)
assert !(Double.NaN < 0)
assert !(Double.NaN > 0)
A NaN should also not equal a NaN.
assert Double.NaN != Double.NaN
Activity
Guillaume Laforge
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Fix Version/s | 1.6.1 [ 14852 ] | |
| Fix Version/s | 1.5.8 [ 14630 ] | |
| Fix Version/s | 1.7-beta-1 [ 14014 ] |
Guillaume Laforge
made changes -
| Fix Version/s | 1.6.1 [ 14852 ] | |
| Fix Version/s | 1.6.2 [ 15151 ] |
Guillaume Laforge
made changes -
| Fix Version/s | 1.5.8 [ 14630 ] |
Guillaume Laforge
made changes -
| Fix Version/s | 1.6.2 [ 15151 ] | |
| Fix Version/s | 1.6.3 [ 15251 ] |
Guillaume Laforge
made changes -
| Fix Version/s | 1.6.3 [ 15251 ] |
Guillaume Laforge
made changes -
| Fix Version/s | 1.7-beta-1 [ 14014 ] | |
| Fix Version/s | 1.7-beta-x [ 15538 ] |
blackdrag blackdrag
made changes -
| Fix Version/s | 1.8.x [ 15750 ] | |
| Fix Version/s | 2.x [ 17013 ] | |
| Fix Version/s | 1.7.x [ 15538 ] |
Comparisons that groovy is doing is through calls to Double.compare(..) in this case:
In Java too:
Double.compare(Double.NaN, 0) //returns 1, indicating NaN > 0
Double.compare(Double.NaN, Double.NaN) //returns 0, indicating NaN and NaN are equal.
However:
Double.NaN < 0 //returns false
Double.NaN > 0 //returns false
Double.NaN == Double.NaN // returns false
So, does it mean that even in Groovy, if Double.NaN, Float.NaN are involved, they should be treated differently before the comparison reaches Double.compare(..) / Float.compare(..), etc?