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

(fmt) Formatter printf rounding error (double rounding up) for double values close to but below tie

    XMLWordPrintable

    Details

    • Subcomponent:
    • Understanding:
      Cause Known
    • CPU:
      generic
    • OS:
      generic

      Description

      PrintStream.printf (i.e. java.util.Formater printf) is suffering the same kind of rounding problems
      that was found in java.text.DecimalFormat/DigitList : erroneous double rounding

      The following code:
        double d = 12.225d;
        System.out.println("BigDecimal output for " + d + " -> " + new BigDecimal(d).toString());
        System.out.printf("test %1$.2f \n", 12.225d);

      shows that printf will wrongly round up, following half-up rounding rule specified by
      Format string syntax in Formatter.

      Result from the above is the following output :
      > BigDecimal output for 12.225 -> 12.2249999999999996447286321199499070644378662109375
      > test 12.23
      the printf call shoud provide "test 12.22" since the double d is below the tie.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              bpb Brian Burkhalter
              Reporter:
              olagneau Olivier Lagneau (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated: