Hi Oliver,
I wrote a javaagent-based patch for this bug. I haven't contributed it
formally since my employer's legal department is still hung up on the Oracle
Contributor Agreement (though we have released it on GitHub under GPLv2 w/CPE).
I'm not linking to it here under the assumption that your patch was developed
independently and I don't want to confuse the issue with legalities. I copied
your patch into my shim locally and ran my test cases and still get a couple
failures (see output below). Your patch and my version differ in the way and
order in which we interpret allDecimalDigits and alreadyRounded.
PATCH SELF TEST:
java.text.DigitList.shouldRoundUp(int,boolean,boolean)
HALF_UP case
StackOverflow.com question 24426438 test case 1:
6.2088 HALF_UP --> 6.209 OK
6.2089 HALF_UP --> 6.209 OK
StackOverflow.com question 24426438 test case 2:
0.0 HALF_UP --> 0 OK
...
0.14 HALF_UP --> 0.1 OK
0.15 HALF_UP --> 0.1 expected: 0.2
0.16 HALF_UP --> 0.2 OK
...
0.34 HALF_UP --> 0.3 OK
0.35 HALF_UP --> 0.3 expected: 0.4
0.36 HALF_UP --> 0.4 OK
...
0.84 HALF_UP --> 0.8 OK
0.85 HALF_UP --> 0.8 expected: 0.9
0.86 HALF_UP --> 0.9 OK
...
0.94 HALF_UP --> 0.9 OK
0.95 HALF_UP --> 0.9 expected: 1
0.96 HALF_UP --> 1 OK
...
0.99 HALF_UP --> 1 OK
JDK-8041961 test case:
99.9989 HALF_UP --> 100 OK
99.999 HALF_UP --> 100 OK
JDK-8039915 test case:
0.95000055 HALF_UP --> 0.950001 OK
0.9500006 HALF_UP --> 0.950001 OK
Above tests used Java 1.8.0_20 (Oracle Corporation)
installed at C:\JAVA\latest8\jre
Agent installed: yes
Patch applied : yes
Overall result : BAD PATCH (!) on Oracle Corporation Java 1.8.0_20
--
William Price | Software Architect | PROS, Inc.
Phone: +1 713-335-5244