Please review this PR which corrects an edge case bug for java.text.DecimalFormat that causes incorrect parsing results for strings with very large exponent values.
When parsing values with large exponents, if the value of the exponent exceeds `Integer.MAX_VALUE`, the parsed value is equal to 0. If the value of the exponent exceeds `Long.MAX_VALUE`, the parsed value is equal to the mantissa. Both results are confusing and incorrect. For example, NumberFormat fmt = NumberFormat.getInstance(Locale.US); fmt.parse(".1E2147483648"); // returns 0.0 fmt.parse(".1E9223372036854775808"); // returns 0.1 // For comparison Double.parseDouble(".1E2147483648"); // returns Infinity Double.parseDouble(".1E9223372036854775808"); // returns Infinity After this change, both parse calls return `Double.POSITIVE_INFINITY` now. ------------- Commit messages: - init Changes: https://git.openjdk.org/jdk/pull/19075/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19075&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8331485 Stats: 165 lines in 2 files changed: 159 ins; 1 del; 5 mod Patch: https://git.openjdk.org/jdk/pull/19075.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/19075/head:pull/19075 PR: https://git.openjdk.org/jdk/pull/19075