File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Java in General and the fly likes a simple addition of decimal numbers Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "a simple addition of decimal numbers" Watch "a simple addition of decimal numbers" New topic
Author

a simple addition of decimal numbers

rakesh verma
Greenhorn

Joined: Jul 13, 2005
Posts: 22
In our project, we are taking care that all the float numbers shuld be of two decimal places only and we r not using something like BigDecimal for this to keep it simple.

So, at all the divisions I am taking care of rounding it to two decimals. Now I found a strange test case, where in adding two numbers with two decimals each resulting in more decimals as below...

S.O.P(56.56+0.56) --- gives 57.120000000000005

S.O.P(56.56f+0.56f) --- gives 57.120003

Ideally it shud just result 57.12. Can I know the reason why it is happening like above.
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

See Some things you should know about floating-point arithmetic.


"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer
sscce.org
rakesh verma
Greenhorn

Joined: Jul 13, 2005
Posts: 22
thanks marc
Darryl Failla
Ranch Hand

Joined: Oct 16, 2001
Posts: 128
Since you're only dealing with two digits all the time, you might want to consider keeping all of your numbers as ints. If it's possible, multiply by 100 and store as an int. Add your ints into a double and display your double divided by 100.

int i1 = 5656;
int i2 = 0056;
double d1 = i1 + i2;
System.out.println(d1/100);


Darryl Failla
Sun Certified Java 2 Programmer
Peter Chase
Ranch Hand

Joined: Oct 30, 2001
Posts: 1970
Originally posted by Darryl Failla:
Since you're only dealing with two digits all the time, you might want to consider keeping all of your numbers as ints. If it's possible, multiply by 100 and store as an int.


This is good advice. And if, as I suspect from the fact you're using 2 decimal places, you are doing financial calculations, it is essential that you use integer arithmetic. Floating point is unacceptably inaccurate.

Not sure about the bit suggesting displaying using a double. This could still go wrong.
[ July 19, 2006: Message edited by: Peter Chase ]

Betty Rubble? Well, I would go with Betty... but I'd be thinking of Wilma.
 
wood burning stoves
 
subject: a simple addition of decimal numbers
 
Similar Threads
double precision?
How do i round a double to two decimal places?
Rounding problem
Widening Conversion
Can somebody write a toHex() for me ?