Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4344834

[Fmt-Nu] Java SDK "1.3.0-C" localization issue with Double.parseDouble(String) method

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: P4 P4
    • None
    • 1.3.0
    • core-libs
    • None
    • unknown
    • solaris_7

      One of our developers here is experimenting with Java SDK "1.3.0-C" on
      WindowsNT has encountered what appears to be an incomplete Java
      localization issue. Can you pass the following along to your development
      folks to see if they concur that this is a bug?
      Here is my observation on the Double.parseDouble(String) method.

      I am using the latest jdk1.3 final release. It apparently shows that Sun's
      implementation of Double does not accept a String which is in the France locale.

      The source is attached.


      richard.baxter@east 2000-06-30
      recent customer feed back is:

       From the java2doc that came with Java SDK "1.3.0-C" on WindowsNT ,
      Double.parseDouble makes use of the 'valueOf' method to perform its
      function. It seems unlikely that, 'valueOf' is going to take into account
      localization issues and know to replace a US locale separator '.' with a
      French local separator of ','.

      Further, when we look at Java Source code for Double.parseDouble(), it uses
      'FloatingDecimal.readJavaFormatString(s).doubleValue();' The implementation
      for readJavaFormatString is hard-coded to look for a decimal value as a
      separator (see line 1033).

      Finally, when we do use the workaround, localization fails. Here is sample
      code and the result....
      import java.util.*;
      import java.text.*;
      public class Test {
      public static void main(String[] args)
      {
      String doubleStr = "12,34";
      // Get the default locale
      Locale l = Locale.getDefault();
      try {
      double d = Double.valueOf(doubleStr).doubleValue();
      } catch (NumberFormatException e) {
      e.printStackTrace();
      System.out.println("The number parsed is: " + doubleStr);
      System.out.println("Default locale is: " + l);
      }
      }
      }
      Here is the result:
      U:\>java Test
      java.lang.NumberFormatException: 12,34
      at java.lang.FloatingDecimal.readJavaFormatString(Unknown Source)
      at java.lang.Double.valueOf(Unknown Source)
      at Test.main(Test.java:11)
      The number parsed is: 12,34
      Default locale is: fr_FR

            darcy Joe Darcy
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: