Urgent [9], 3rd round, RFR (S) : JDK-8039915 NumberFormat.format() does not consider required no. of fraction digits properly
olivier.lagneau at oracle.com
olivier.lagneau at oracle.com
Fri Oct 10 09:14:54 UTC 2014
Thanks Joe,
Will modify and check the tests accordingly.
Brian, I guess you are still ok with these code changes ?
Thanks a lot both of you for the reviewing.
Thanks a lot William for checking with your own tests. That is very much
appreciated ! ;-)
Olivier.
On 09/10/2014 19:16, Joe Darcy wrote:
> Hi Olivier,
>
> Please change the formatting any if-else statements like
>
> 537 }
> 538 else {
>
> 545 }
> 546 else {
>
> 552 }
> 553 else {
>
> to be
>
> 537 } else {
>
> More substantively, these lines
>
> 547 // Not an exact binary representation.
> 548 if (alreadyRounded) {
> 549 // Digit sequence rounded-up. Was
> below tie.
> 550 // Don't round-up twice !
> 551 return false;
> 552 }
> 553 else {
> 554 // Digit sequence truncated. Was
> above tie.
> 555 // must round-up !
> 556 return true;
> 557 }
>
> Can be replaced by
>
> return !alreadyRounded;
>
> with appropriate commenting.
>
> Please make these changes; as long as the tests still pass, no
> re-review is needed.
>
> Thanks,
>
> -Joe
>
> On 10/9/2014 3:27 AM, olivier.lagneau at oracle.com wrote:
>> Please review this 3rd version of the fix taking into account latest
>> feedback from Joe.
>>
>> Bug : https://bugs.openjdk.java.net/browse/JDK-8039915
>> Webrev : http://cr.openjdk.java.net/~olagneau/8039915/webrev.02/
>> <http://cr.openjdk.java.net/%7Eolagneau/8039915/webrev.02/>
>>
>> List of changes from previous webrev:
>> - renamed "allDecimalDigits" to "valueExactAsDecimal"
>> - changed related @param javadoc comments
>> - restored conventional formatting on "else if" clause
>> - changed rounding decision code when last digit at rounding position
>> and valueExactAsDecimal true to synthetic return statement:
>> "return roundingMode == RoundingMode.HALF_UP;" with adapted comment.
>>
>> testing: jtreg, jck8, jprt, code coverage.
>>
>> Thanks for reviewing,
>> Olivier.
>>
>>
>>
>> On 07/10/2014 18:25, Joe Darcy wrote:
>>> 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".
>>>
>>> For
>>>
>>> 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 ==
>>> RoundingMode.HALF_UP;
>>>
>>> with a suitable comment.
>>>
>>> Please make these adjustments and I'll do a careful review of the
>>> rounding logic.
>>>
>>> Thanks,
>>>
>>> -Joe
>>>
>>> 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