Re: Comparing floating point values in Java
- From: Patricia Shanahan <pats@xxxxxxx>
- Date: Sun, 31 Dec 2006 00:11:38 GMT
Daniel Pitts wrote:
Eric Sosman wrote:Philipp wrote:[...]Perhaps you can avoid the entire issue by choosing a
I was calculating an array of float values from some user input. But
sometimes (rarely) the calculation cannot be done (this is correct
behavior).
I then want to mark these values by setting them to -1 and treat this
special case later on. So I later need to test for -1 in my array.
different "distinguished value." Float.NaN, maybe, using
the Float.isNaN(float) method instead of an == test. (NaN
seems a more natural surrogate for "does not compute," too.)
--
Eric Sosman
esosman@xxxxxxxxxxxxxxxxxxx
Or even have a seperate boolean array to specify valid results.
Having a magic value isn't generally a good idea, although NaN would be
the way to go if you did.
Since the special cases are rare, one could also describe them by having
e.g. a HashSet<Integer> containing the index values of the special cases.
Using any magic value, including NaN, has the risk that a bug elsewhere
in the code will get hidden as the special case. The risk can be reduced
by using a specific NaN value and Float.floatToRawIntBits to check for it.
Patricia
.
- References:
- Comparing floating point values in Java
- From: Philipp
- Re: Comparing floating point values in Java
- From: Arne Vajhøj
- Re: Comparing floating point values in Java
- From: Philipp
- Re: Comparing floating point values in Java
- From: Eric Sosman
- Re: Comparing floating point values in Java
- From: Daniel Pitts
- Comparing floating point values in Java
- Prev by Date: Re: Comparing floating point values in Java
- Next by Date: Map.get(key) returns null after inserting key
- Previous by thread: Re: Comparing floating point values in Java
- Next by thread: Re: Comparing floating point values in Java
- Index(es):
Relevant Pages
|
|