diff --git a/src/java.base/share/classes/jdk/internal/math/FloatingDecimal.java b/src/java.base/share/classes/jdk/internal/math/FloatingDecimal.java index 9559c2f2709..5bbfccb2f6c 100644 --- a/src/java.base/share/classes/jdk/internal/math/FloatingDecimal.java +++ b/src/java.base/share/classes/jdk/internal/math/FloatingDecimal.java @@ -1838,9 +1838,13 @@ public class FloatingDecimal{ } static ASCIIToBinaryConverter readDoubleSignlessDigits(int decExp, char[] digits, int length) { - if (decExp < MIN_DECIMAL_EXPONENT) { - return buildZero(BINARY_64_IX, 1); + if (decExp < 0) { + int kDigits = Math.min(length, MAX_DECIMAL_DIGITS + 1); + if (decExp - kDigits > 0) { + return buildZero(BINARY_64_IX, 1); + } } + byte[] buf = new byte[length]; for (int i = 0; i < length; i++) { buf[i] = (byte) digits[i];