Solved

Casting doubles to integer problem

Posted on 2003-11-23
5
482 Views
Last Modified: 2010-03-31
Hiya

I have a small problem when trying to cast a double precision number to an integer:  

When I input a double number into my program (its a command line program) I want to immediatly multiply it by 100 and convert it to an integer.  The user should always be inputing numbers with no more than 2 decimal places as it will always be an amount of money.  

Basically it usually works for most numbers, but certain numbers such as 19.99 gets converted to 1998 (or 1998.99999999999 when I output the multipled double).  

I was just wondering if there was a simple fix for this.
0
Comment
Question by:antt
  • 2
  • 2
5 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 9806260
The manipulation of floating point values is constrained by degrees of precision - they frequently therefore end up as approximations. For arbitrary precision, use the BigDecimal class:

    String s = "19.99";
    double d = Double.parseDouble(s);
    System.out.println(s + " (parseDouble) -> " + d * 100);
    BigDecimal bd = new BigDecimal(s);
    d = bd.doubleValue();
    System.out.println(s + " (BigDecimal) -> " + d);
0
 
LVL 15

Expert Comment

by:JakobA
ID: 9806630
double d = Double.parseDouble("19.99");
int cents = Math.round( d * 100 );
0
 
LVL 15

Accepted Solution

by:
JakobA earned 25 total points
ID: 9806636
Oops. it needs an explicit cast:
int cents = (int)Math.round( d * 100 );
0
 

Author Comment

by:antt
ID: 9809882
dammit still doesnt work
0
 

Author Comment

by:antt
ID: 9809896
oh wait yes it does

i cant count
0

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
windows explorer path to command prompt 5 45
varialbe initialization 11 33
Way to decrease size of apk file 9 70
Java: The Public Class Main 4 17
For customizing the look of your lightweight component and making it look opaque like it was made of plastic.  This tip assumes your component to be of rectangular shape and completely opaque.   (CODE)
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question