How do you set a double value to a "non-value"
Two obvious options:
- Use
Double
instead ofdouble
. You can then usenull
, but you've changed the memory patterns involved substantially. Use a "not a number" (NaN) value:
double d = 5.5; System.out.println(Double.isNaN(d)); // false d = Double.NaN; System.out.println(Double.isNaN(d)); // true
Note that some other operations on "normal" numbers could give you NaN values as well though (0 divided by 0 for example).
Related videos on Youtube
Ankur
A junior BA have some experience in the financial services industry. I do programming for my own personal projects hence the questions might sound trivial.
Updated on July 09, 2022Comments
-
Ankur almost 2 years
I have two double data elements in an object.
Sometimes they are set with a proper value and sometimes not. When the form field from which they values are received is not filled I want to set them to some value that tells me, during the rest of the code that the form fields were left empty.
I can't set the values to null as that gives an error, is there some way I can make them 'Undefined'.
PS. Not only am I not sure that this is possible, it might not also make sense. But if there is some best practice for such a situation I would be keen to hear it.
-
Ankur almost 14 yearsThanks ... NaN will solve my purposes. I won't be doing any arithmetic on these numbers so that will do it just nicely.
-
Jesper almost 14 yearsBeware with
NaN
that using==
with them always returnsfalse
, evenDouble.NaN == Double.NaN
isfalse
. You must useDouble.isNaN(...)
to check if adouble
is not-a-number. -
sleske almost 14 yearsI also commonly use the "Double=null" trick. I'd prefer it to the NaN option, both because NaN might occur as a value, and because "null for unset" is a common practice in Java.
-
Jon Skeet almost 14 years@sleske: Yes - it depends on the situation though. It could be expensive in terms of heap usage if you ended up creating huge numbers of
Double
objects. -
sleske almost 14 yearsTrue. But I'd usually file that under "premature optimization" and worry about it later ;-). Still, good to consider the possibility.