< prev index next >

src/java.base/share/classes/java/math/BigInteger.java

Print this page

        

@@ -3958,10 +3958,23 @@
         toString(this, sb, radix, 0);
 
         return sb.toString();
     }
 
+    private static void padWithZeros(StringBuilder buf, int len, int digits) {
+        if (digits > 0 && len < digits) {
+            int m = digits - len;
+            while (m >= NUM_ZEROS) {
+                buf.append(ZEROS);
+                m -= NUM_ZEROS;
+            }
+            if (m > 0) {
+                buf.append(ZEROS, 0, m);
+            }
+        }
+    }
+
     /**
      * This method is used to perform toString when arguments are small.
      * A negative sign will be prepended if and only if {@code this < 0}.
      * If {@code digits <= 0} no padding (pre-pending with zeros) will be
      * effected.

@@ -3971,10 +3984,11 @@
      * @param digits The minimum number of digits to pad to.
      */
     private void smallToString(int radix, StringBuilder buf, int digits) {
         if (signum == 0) {
             buf.append('0');
+            padWithZeros(buf, 1, digits);
             return;
         }
 
         // Put sign (if any) into result buffer
         if (signum < 0) {

@@ -4004,34 +4018,23 @@
 
         // Get string version of first digit group
         String s = Long.toString(digitGroups[numGroups-1], radix);
 
         // Pad with internal zeros if necessary.
-        if (digits > 0) {
-            int len = s.length() + (numGroups - 1)*digitsPerLong[radix];
-            if (len < digits) {
-                int m = digits - len;
-                while (m >= NUM_ZEROS) {
-                    buf.append(zeros);
-                    m -= NUM_ZEROS;
-                }
-                if (m > 0) {
-                    buf.append(zeros, 0, m);
-                }
-            }
-        }
+        padWithZeros(buf, s.length() + (numGroups - 1)*digitsPerLong[radix],
+            digits);
 
         // Put first digit group into result buffer
         buf.append(s);
 
         // Append remaining digit groups each padded with leading zeros
         for (int i=numGroups-2; i >= 0; i--) {
             // Prepend (any) leading zeros for this digit group
             s = Long.toString(digitGroups[i], radix);
             int numLeadingZeros = digitsPerLong[radix] - s.length();
             if (numLeadingZeros != 0) {
-                buf.append(zeros, 0, numLeadingZeros);
+                buf.append(ZEROS, 0, numLeadingZeros);
             }
             buf.append(s);
         }
     }
 

@@ -4112,15 +4115,15 @@
             powerCache = pc; // volatile write, publish
         }
         return cacheLine[exponent];
     }
 
-    /* Size of zeros string. */
+    /* Size of ZEROS string. */
     private static int NUM_ZEROS = 63;
 
-    /* zero is a string of NUM_ZEROS consecutive zeros. */
-    private static final String zeros = "0".repeat(NUM_ZEROS);
+    /* ZEROS is a string of NUM_ZEROS consecutive zeros. */
+    private static final String ZEROS = "0".repeat(NUM_ZEROS);
 
     /**
      * Returns the decimal String representation of this BigInteger.
      * The digit-to-character mapping provided by
      * {@code Character.forDigit} is used, and a minus sign is
< prev index next >