JDK 8 code review request for 6964528: Double.toHexString(double d) String manipulation with + in an append of StringBuilder

Joe Darcy joe.darcy at oracle.com
Fri Feb 1 21:45:18 UTC 2013


On 02/01/2013 01:41 PM, Louis Wasserman wrote:
> Would appending the character 'p' instead of the string "p" make any 
> difference?

Not a big enough one for me to feel compelled to look into it ;-)

-Joe

>
>
> On Fri, Feb 1, 2013 at 1:39 PM, Joe Darcy <joe.darcy at oracle.com 
> <mailto:joe.darcy at oracle.com>> wrote:
>
>     Hello,
>
>     Please review a simple refactoring fix in Double.toHexString
>
>         6964528: Double.toHexString(double d) String manipulation with
>     + in an append of StringBuilder
>     http://cr.openjdk.java.net/~darcy/6964528.0/
>     <http://cr.openjdk.java.net/%7Edarcy/6964528.0/>
>
>     Patch below.
>
>     Thanks,
>
>     -Joe
>
>     --- old/src/share/classes/java/lang/Double.java  2013-02-01
>     13:36:33.000000000 -0800
>     +++ new/src/share/classes/java/lang/Double.java  2013-02-01
>     13:36:33.000000000 -0800
>     @@ -1,5 +1,5 @@
>      /*
>     - * Copyright (c) 1994, 2012, Oracle and/or its affiliates. All
>     rights reserved.
>     + * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All
>     rights reserved.
>       * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>       *
>       * This code is free software; you can redistribute it and/or
>     modify it
>     @@ -289,7 +289,7 @@
>                  return Double.toString(d);
>              else {
>                  // Initialized to maximum size of output.
>     -            StringBuffer answer = new StringBuffer(24);
>     +            StringBuilder answer = new StringBuilder(24);
>
>                  if (Math.copySign(1.0, d) == -1.0)    // value is
>     negative,
>                      answer.append("-");                  // so append
>     sign info
>     @@ -300,8 +300,7 @@
>
>                  if(d == 0.0) {
>                      answer.append("0.0p0");
>     -            }
>     -            else {
>     +            } else {
>                      boolean subnormal = (d < DoubleConsts.MIN_NORMAL);
>
>                      // Isolate significand bits and OR in a
>     high-order bit
>     @@ -324,13 +323,14 @@
>                                    "0":
>      signif.replaceFirst("0{1,12}$", ""));
>
>     +                answer.append("p");
>                      // If the value is subnormal, use the E_min exponent
>                      // value for double; otherwise, extract and
>     report d's
>                      // exponent (the representation of a subnormal uses
>                      // E_min -1).
>     -                answer.append("p" + (subnormal ?
>     -                               DoubleConsts.MIN_EXPONENT:
>     -                               Math.getExponent(d) ));
>     +                answer.append(subnormal ?
>     +                              DoubleConsts.MIN_EXPONENT:
>     +                              Math.getExponent(d));
>                  }
>                  return answer.toString();
>              }
>
>
>
>
> -- 
> Louis Wasserman




More information about the core-libs-dev mailing list