File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes Strange Result Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Strange Result" Watch "Strange Result" New topic

Strange Result

Shaan Shar
Ranch Hand

Joined: Dec 27, 2005
Posts: 1249

Instead of showing 0.90 it's showing 0.8999999999999999. Could anyone give the reason.

The Best way to predict your future is to create it - Every great individual common man
Henry Wong

Joined: Sep 28, 2004
Posts: 19507

See point 23 of the Beginner's FAQ for an explanation.


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Tom Fulton
Ranch Hand

Joined: Mar 30, 2006
Posts: 95
It's because of the binary representation of a double, which holds up to 15 digits of precision.

You can get the result you want in at least two ways:

1. Convert the literals from a double to a float (4 bytes instead of 8, and roughly 7 digits of precision), as follows:

2. Format the result to print the number of digits you want, which will round appropriately, as follows:

import java.text.DecimalFormat;

For further information and examples, Google "Number Format Java"
[ April 12, 2006: Message edited by: Tom Fulton ]
I agree. Here's the link:
subject: Strange Result