IBM Support

IJ18031: INCORRECT RESULTS FROM JAVA.TEXT.DECIMALFORMAT

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • Error Message: After a period of correct operation, incorrect
    results were obtained from DecimalFormat.format where the
    parameter is a BigDecimal.doubleValue() expression. Errors in
    the output may include an incorrect number of trailing zeros
    after the decimal point, and incorrect rounding of the least
    significant digit.
    .
    Stack Trace: N/A
    .
    

Local fix

  • The problem is caused by the decimal format peephole
    optimisation and can be avoided by disabling that optimisation
    with
    -Xjit:disableDecimalFormatPeephole
    

Problem summary

  • The conversion of a BigDecimal to a double or float value and
    it's subsequent use by DecimalFormat.format involves a large
    amount of redundant work. The decimal format peephole attempted
    to avoid some of this work by combining elements of both methods
     into a single implementation. Unfortunately, maintaining
    identical behaviour for all of the possible formatting options
    was not achieved.
    

Problem conclusion

  • The faulty optimisation will be removed in a future release of
    the JVM. For now it has been disabled by default. If an
    application experiences a performance impact because of this
    change, and can tolerate the differences in behaviour described
    above, then the optimisation can be re-enabled by using the
    inverted option
    
    -Xjit:!disableDecimalFormatPeephole
    
    (NB there can only be a single active Xjit option on the JVM
    command line, so if multiple flags are required they can be
    combined with commas.)
    .
    This APAR will be fixed in the following Java Releases:
       7R1    SR4 FP50  (7.1.4.50)
       8      SR5 FP41  (8.0.5.41)
    
    .
    Contact your IBM Product's Service Team for these Service
    Refreshes and Fix Packs.
    For those running stand-alone, information about the available
    Service Refreshes and Fix Packs can be found at:
               https://www.ibm.com/developerworks/java/jdk/
    

Temporary fix

Comments

APAR Information

  • APAR number

    IJ18031

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2019-07-31

  • Closed date

    2019-08-05

  • Last modified date

    2019-10-18

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    JIT

  • Fixed component ID

    620700124

Applicable component levels

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSC9HBA","label":"Just In Time (JIT) Compiler"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"130","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
18 October 2019