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

Reply via email to