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: 20517

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: 96
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
It's not a secret anymore!