Urgent [9], 2nd round, RFR (S) : JDK-8039915 NumberFormat.format() does not consider required no. of fraction digits properly

Joe Darcy joe.darcy at oracle.com
Tue Oct 7 16:25:37 UTC 2014

Hi Olivier,

Some rewording suggestions:

  445      * @param alreadyRounded Boolean indicating if rounding up 
already happened.
  446      * @param allDecimalDigits Boolean indicating if the digits 
provide an exact
  447      * representation of the value.

Including the type of the parameter is redundant with its declaration so 
I'd recommend something like

  445      * @param alreadyRounded whether or not rounding up has 
already happened.

Given the semantics of allDecimalDigits, I recommend renaming the 
parameter to something like "valueExactAsDecimal".


please restore the conventional formatting

  532                 } else if (digits[maximumDigits] == '5') {

The code

  543                             if (roundingMode == 
RoundingMode.HALF_UP) {
  544                                 // Strictly follow HALF_UP rule 
==> round-up
  545                                 return true;
  546                             }
  547                             else {
  548                                 // Strictly follow HALF_DOWN rule 
==> don't round-up
  549                                 return false;
  550                             }

can be replaced by

  545                                 return roundingMode == 

with a suitable comment.

Please make these adjustments and I'll do a careful review of the 
rounding logic.



On 10/2/2014 9:29 AM, olivier.lagneau at oracle.com wrote:
> Please review this 2nd version of the fix taking into account your 
> feedback.
> Bug : https://bugs.openjdk.java.net/browse/JDK-8039915
> webrev : http://cr.openjdk.java.net/~olagneau/8039915/webrev.01 
> <http://cr.openjdk.java.net/%7Eolagneau/8039915/webrev.01>
> I have changed the code following your remarks
> Testing: lot of testing on jtreg, jck8, code coverage, jprt.
> Below are more details on the changes in this webrev.
> For the new work in question, it might be clearer to me if the HALF_UP 
> and HALF_DOWN cases
>>  were combined into a single block since they > share much of the logic.
>> The unique logic for each mode would be easier to see if the 
>> differences were placed together. 
> I have merged HALF_UP and HALF_DOWN cases into a single switch case.
> I also tested a fully merged version where HALF_UP, HALF_DOWN, and 
> also HALF_EVEN are merge
> into a single switch case. So merging the three is even possible.
> If you want to have the three HALF_* cases we can quickly move to that.
>> My only suggestions are trivial: 1) enhance the method javadoc of 
>> shouldRoundUp(), e.g., there are no @param tags for the boolean 
>> parameters,
> Fixed that. @param tags are available for shouldRoundUp method
>> 2) use braces around all the statements contained in if/else blocks 
>> (see below). Comment #2 is nit-picky.
> Took care to follow this rule in this new version.
>> If the test is already printing out the information you showed above 
>> (“Error formatting …”) then I think it is enough but the verbiage 
>> should perhaps match the reminder, e.g., “Failure: Error formatting 
>> double …”
> Changed test code to provide this consistent wording.
> Thanks,
> Olivier.

More information about the core-libs-dev mailing list