Forums Register Login

equal()

+Pie Number of slices to send: Send
Double d=new Double(0.9);
Float f= new Float(0.9f);
why is f.equals(d) returns false.
I know that equals()test for value.
if double d=0.9;
float f=O.9f;
d==f returns true.
why when the value of object is checked it returns false.
I think I am missing some thing.Please point it out.
-Thanks
+Pie Number of slices to send: Send
In this case, equals() returns false because you are comparing objects of two different types.
Many implementations of the ClassType.equals(object x) method say something like:
"Only return true if and only iff x is instance of ClassType and . . . "
Remember you're not using equals() to compare th values wrapped by the wrapper classes. You are comparing the objects.
+Pie Number of slices to send: Send
HI Tony,
In ur code:
Double d=new Double(0.9);
Float f= new Float(0.9f);
d and f are two different types of objects one is of type Double and other Float and hence the tyoe of value they represent is different.Thats why
f.equals(d) returns false ..
Now secondly,
double d=0.9;
float f=O.9f;
d==f returns true.
for == operator the binary numeric promotion is applied and so when we compare double and float ..the value
of float (0.9f) gets promoted to double ..
so u get the answer as true.
This type of automatic conversion is not applicable to Object types (here it is Double and Float).
I hope u get it.
Swapna
+Pie Number of slices to send: Send
double d=0.9;
float f=0.9f;
System.out.println("d==f " + (d==f));
if(d==f)
System.out.println("d==f=true");
I tried this , but got answer d==f as false
+Pie Number of slices to send: Send
If d had been initialized as
double d = 0.9f;
then it would have printed true.

Clement
+Pie Number of slices to send: Send
double d21=10.3;
float f21=10.3f;
System.out.println("d==f " + (f21==d21));
if(f21==d21)
System.out.println("d==f=true");
This does not return true for all values
like 0.9. 0.5
I think while promotion it loses precision.
am i right?
+Pie Number of slices to send: Send
"Ana P"-
Welcome to the JavaRanch! Please adjust your displayed named to match the JavaRanch Naming Policy. You can adjust it here.
Thanks! and welcome to the JavaRanch!
I think she's lovely. It's this tiny ad that called her crazy:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com


reply
reply
This thread has been viewed 952 times.
Similar Threads
About Wrapper classes.
equals
SCJP doubt
Regarding Assignment
'if' with float &double
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 29, 2024 03:04:16.