Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
The moose likes Beginning Java and the fly likes How to trim double value Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Reply Bookmark "How to trim double value " Watch "How to trim double value " New topic
Author

How to trim double value

vanlalhmangaiha khiangte
Ranch Hand

Joined: Sep 11, 2006
Posts: 169


How do i trim the double values upto two decimal places?
9.870000000000001 should be 9.87
4.609999999999999 should be 4.61
Why this values are different ?

Thanks in advance
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 32712
    
    4
This is normal behaviour for floating-point aruthmetic. It is like calculating 1/3 = 0.333333333333333333 in decimal, then 1/3 * 3 = 0.999999999999999999 and when you subtract it from 1 you get 0.00000000000000000001. (Or something like that.) There are some numbers which cannot round like that at all, which is why you are getting numbers ending with 0000000001 or 9999999999.
That is why you shouldn't use floating point arithmetic for money or as the counter for a for loop.

Suggest what you actually want is to print out the numbers with a particular precision, rather than rounding.

Try the % tags which are described in the API for the Formatter class. There is more about the % tags in the Java Tutorial here. You probably want something like
System.out.printf("Number = %6.2f%n", doubleNumber);
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 35258
    
    7
Links to more in-depth explanations about floating point acccuracy can be found under #20 in the http://faq.javaranch.com/java/JavaBeginnersFaq


Android appsImageJ pluginsJava web charts
 
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to run our stuff on 16 servers instead of 3.
 
subject: How to trim double value
 
Similar Threads
Getting the average to display
this problem baffles me
Multiplying double values
HELP!!!! how does Character.isLetter work? (need experts)
Confusion about Double.NaN