< prev index next >
src/java.base/share/classes/java/math/BigInteger.java
Print this page
*** 3999,4011 ****
// Append remaining digit groups 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[numLeadingZeros]);
count += numLeadingZeros;
}
buf.append(s);
count += s.length();
}
--- 3999,4011 ----
// Append remaining digit groups 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);
count += numLeadingZeros;
}
buf.append(s);
count += s.length();
}
*** 4043,4060 ****
// Pad with internal zeros if necessary.
// Don't pad if we're at the beginning of the string.
if (!atBeginning && len < digits) {
int m = digits - len;
! int zl1 = zeros.length - 1;
! while (m >= zl1) {
! sb.insert(pos, zeros[zl1]);
! pos += zl1;
! m -= zl1;
}
if (m > 0) {
! sb.insert(pos, zeros[m]);
}
}
return;
}
--- 4043,4059 ----
// Pad with internal zeros if necessary.
// Don't pad if we're at the beginning of the string.
if (!atBeginning && len < digits) {
int m = digits - len;
! while (m >= NUM_ZEROS) {
! sb.insert(pos, zeros, 0, NUM_ZEROS);
! pos += NUM_ZEROS;
! m -= NUM_ZEROS;
}
if (m > 0) {
! sb.insert(pos, zeros, 0, m);
}
}
return;
}
*** 4103,4120 ****
powerCache = pc; // volatile write, publish
}
return cacheLine[exponent];
}
! /* zero[i] is a string of i consecutive zeros. */
! private static String[] zeros = new String[64];
! static {
! zeros[63] =
! "000000000000000000000000000000000000000000000000000000000000000";
! for (int i=0; i < 63; i++)
! zeros[i] = zeros[63].substring(0, i);
! }
/**
* 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
--- 4102,4116 ----
powerCache = pc; // volatile write, publish
}
return cacheLine[exponent];
}
! /* 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);
/**
* 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 >