JDK-4156602 : DecimalFormat: incorrect minimum integer digits for patterns like "#.#"
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.text
  • Affected Version: 1.2.0
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: solaris_2.5
  • CPU: sparc
  • Submitted: 1998-07-13
  • Updated: 1998-07-29
  • Resolved: 1998-07-29
Related Reports
Duplicate :  
Description

Name: saC57035			Date: 07/13/98


The java.text.DecimalFormat.applyPattern(String pattern) sets minimum
integer digits incorrectly if all the digits both in the integer part 
and in the fraction part of the pattern are optional.

For example, when applying "##.##" pattern, minimum integer digits 
should be equal to 0, but getMinimumIntegerDigits() returns 1.

Here is the test demonstrating the bug:

-----------------TestD.java------------------------
import java.text.*;

public class TestD {
    public static void main (String args[]){
        DecimalFormat sdf = new DecimalFormat();
        String pattern = "##.##";
        System.out.println("Applying pattern \"" + pattern + "\"");
        sdf.applyPattern(pattern);
        int minIntDig = sdf.getMinimumIntegerDigits();
        if (minIntDig != 0) {
          System.out.println("Test failed");
          System.out.println("  Minimum integer digits : " + minIntDig);
          System.out.println("  new pattern: " + sdf.toPattern());
        } else {
          System.out.println("Test passed");
          System.out.println("  Minimum integer digits : " + minIntDig);
        }
    }
}
---------- Output ----------------
Applying pattern "##.##"
Test failed
  Minimum integer digits : 1
  new pattern: #0.##
---------------------------------


======================================================================