+1 Rémi
> De: "Paul Sandoz" <[email protected]> > À: "Kevin Bourrillion" <[email protected]> > Cc: "amber-spec-experts" <[email protected]> > Envoyé: Mercredi 6 Décembre 2017 19:49:08 > Objet: Re: [records] equality on float / double components >> On 6 Dec 2017, at 10:22, Kevin Bourrillion < [ mailto:[email protected] | >> [email protected] ] > wrote: >> I'd strongly expect this to behave exactly as Float.equals() does. The >> +0.0/-0.0 >> problem exists but is nothing new. > I concur. Float/Double.equals/compare is also used for float/double[] array > equals and compare. > Paul. >> On Wed, Dec 6, 2017 at 1:07 PM, Brian Goetz < [ >> mailto:[email protected] | >> [email protected] ] > wrote: >>> It's time to play everyone's favorite game show, "What about NaN". >>> If we have a record: >>> record Foo(float f); >>> We would like Object.equals() to be reflexive, symmetric, and transitive. >>> But if >>> we define equals() in the obvious way (delegating to float==), then `new >>> Foo(Float.NaN`) would not be equal to itself. >>> If we delegate instead to `Float.compare(this.f, that.f)`, the NaN problem >>> goes >>> away (though comparison becomes modestly more expensive), but now +0 and -0 >>> are >>> distinguished (== treats them the same.) >> -- >> Kevin Bourrillion | Java Librarian | Google, Inc. | [ >> mailto:[email protected] | >> [email protected] ]
