<i18n dev> RFR: 8331485: Odd Results when Parsing Scientific Notation with Large Exponent
Justin Lu
jlu at openjdk.org
Fri May 3 08:51:23 UTC 2024
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
More information about the i18n-dev
mailing list