RFR: 8331485: Odd Results when Parsing Scientific Notation with Large Exponent [v4]
Justin Lu
jlu at openjdk.org
Mon May 6 18:55:25 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.
Justin Lu has updated the pull request incrementally with one additional commit since the last revision:
Check both parse methods
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/19075/files
- new: https://git.openjdk.org/jdk/pull/19075/files/25782781..17a3b3aa
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=19075&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=19075&range=02-03
Stats: 15 lines in 1 file changed: 14 ins; 0 del; 1 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 core-libs-dev
mailing list