• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 334
  • Last Modified:

Double.parseDouble Difficulties

I am using:

public void setUnits(String strUnits) {
 try {
  units = Double.parseDouble(strUnits);
 }

to convert a string contaiing a number into a double value. In the above example, units is a double.

When I run this with a string value of 2330.693064, units is assigned 2330.69 but if I input 104.797350, units is assigned 104.797. If I input 10279.169841, units is asisgned 10279.2.

This seems to suggest that the precision is determined by the number of digits in the integer value.

I want to retain the six decimal places of my source value - is there a better way to convert the string value into a double?

harry.willis##sssltd.co.uk
(where ## is @)
0
harrywillis
Asked:
harrywillis
  • 2
1 Solution
 
msmolyakCommented:
Well, i've compiled a simple program

public class DoubleTest
{
    public static void main(String[] args)
    {
        System.out.println(Double.parseDouble(args[0]));
    }
}

and run it under JDK 1.2.2.  It seems to retain all the significant digits in the number you enter.

Why do you thing the numbers get truncated (or rounded)?

Michael
0
 
harrywillisAuthor Commented:
Using the debugger. Maybe it is just the debugger that is truncating / rounding....

I will try and add the value to my database and see what it stores.
0
 
harrywillisAuthor Commented:
Damn. The debugger in JBuilder (JB3 Enterprise Edition) was showing the truncated / rounded value.

Using System.out.prinln I found that the values were actually correct.

Thanks for your help msmolyak
0

Featured Post

Upgrade your Question Security!

Add Premium security features to your question to ensure its privacy or anonymity. Learn more about your ability to control Question Security today.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now