Summary
Adding support for the compact/short number formatting in JDK.
Problem
The existing NumberFormat APIs provide support for formatting/parsing general purpose numbers e.g. decimal, currency, and percentage, but the support for formatting in compact forms of numbers is not available.
Solution
Add the support for formatting the numbers in compact forms. Each locale has different compact forms for representing a number, hence a number can be formatted in multiple ways across locales.
For Example:
- 1000 can be formatted as "1K", and 1000000 as 1M in "en_US" locale
- 1000 can be formatted as "1 हज़ार", and 50000000 as "5 क." In "hi_IN" locale
CLDR provides patterns for compact number formatting. These resources can be utilized to add locale specific compact number formatting support.
Following major public APIs are introduced for compact number formatting feature:
CompactNumberFormat class targeted for compact number formatting
public class CompactNumberFormat extends NumberFormat
NumberFormat.Style enum for specifying the format style
public static enum NumberFormat.Style
Addition of two fields in "java.text.NumberFormat.Field" which can be used to track the position of prefix and suffix in the resulting output.
public static final NumberFormat.Field PREFIX
public static final NumberFormat.Field SUFFIX
public factory methods in NumberFormat.java to obtain CompactNumberFormat instance
public static NumberFormat getCompactNumberInstance()
public static NumberFormat getCompactNumberInstance(Locale locale,
NumberFormat.Style formatStyle)
Provider method in java/text/spi/NumberFormatProvider
public NumberFormat getCompactNumberInstance(Locale locale, NumberFormat.Style formatStyle)
Specification
http://cr.openjdk.java.net/~arapte/nishjain/8177552/specdiff_cnf.21/overview-summary.html
Serialized form
- csr of
-
JDK-8177552 Compact Number Formatting support
- Resolved
- relates to
-
JDK-8217254 CompactNumberFormat:: CompactNumberFormat() constructor does not comply with spec.
- Resolved