This week's book giveaway is in the Other Languages forum.
We're giving away four copies of Functional Reactive Programming and have Stephen Blackheath and Anthony Jones on-line!
See this thread for details.
Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

comparisons

 
akmal jah
Ranch Hand
Posts: 31
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
public class Test041
{
static double d;
static float f;
public static void main(String args[])
{
compare(Long.MAX_VALUE,
Long.MAX_VALUE );
compare(Integer.MAX_VALUE,
Integer.MAX_VALUE );
compare(Character.MAX_VALUE,
Character.MAX_VALUE);
compare(Short.MAX_VALUE,
Short.MAX_VALUE );
compare(Byte.MAX_VALUE,
Byte.MAX_VALUE );
}
static void compare(double d, float f)
{
if (f == d) System.out.print("
equal" );
else System.out.print("
unequal");
}
}

Answer is : equal unequal equal equal equal
can somebody help me understand this and is there any tricks to remember results of such comparisons ?
 
Bishal P
Ranch Hand
Posts: 43
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The character, short and byte dont need any explanation.
However the int behaviour was very strange so i executed the program with some debugs.
The Long.Max_VALUE is 9223372036854775807 which is 9.223372036854776E18 in double and 9.223372E18 in float.
The Integer.MAX_VALUE is 2147483647 which is 2.147483647E9 in double and 2.14748365E9 in float. As you can the number is rounded of in float. So the compariosion returned "unequal"
I hope they dont give such questions in the real exam. coz if they did then god help me
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic