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

Issue with a double ... again

 
Sergey Gorovoy
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I know that there are issues arising from using primitives of data type double in mathematical expressions. Somewhere in the earlier polsts it was suggested to use Math.round(a), where a is a double. However, when I execute the following:
...
double x = 27.475;
double y = 7.22;
double z = x - y;
System.out.println("x - y = " + Math.round(z));
...
I get "x - y = 20", not 20.255. If I do not use Math.round, I get 20.255000000000003. Now, how would one do the basic calculations then and get the correct result?
 
Manfred Leonhardt
Ranch Hand
Posts: 1492
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Sergey,
You are getting the correct result. Math.round only returns an integer. If you want to "print" out the answer formatted then you can make use of java.text.SimpleDecimalFormat.
SimpleDecimalFormat sdf = new SimpleDecimalFormat( "#.000" );
System.out.println( "x - y = " + sdf.format( z ) );
Regards,
Manfred.
 
Sergey Gorovoy
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanx!
But what about the situation when the value of X and Y is being assigned dynamically, which may result in more than 3 decimal positions for Z? Is there any way to dynalically "round" the result?
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic