10

The concept of formatting large numbers in an abbreviated fashion for casual, non-scientific display (e.g. 12,345 as "12.3k") is well explored on SE:

But none of these address internationalization & localization. Are there different standards for how to do this for other languages or locales? Especially:

  1. Are there different suffixes for different languages?
  2. How is this done differently for numbering systems with different grouping rules (e.g. China, Japan, India)?

1 Answer 1

9

There absolutely are different standards on giving large numbers in a short format.

Not a very human-friendly resource, but one developed for software developers, is the Common Locale Data Repository from the Unicode organization. They have all sorts of data for displaying things like numbers and dates in different locales (not just languages but regional variations of languages as well, as UK and US English may differ, for example). They have these files that outline how to format numbers in short ways.

If you go to their respository and open the file for the language you want, and you search through for "decimalFormats-numberSystem-latn", you'll find the short section that specifies how to format numbers in that language.

So, here's what you find for 'en_GB' (English for the UK):

  "short": {
    "decimalFormat": {
      "1000-count-one": "0K",
      "1000-count-other": "0K",
      "10000-count-one": "00K",
      "10000-count-other": "00K",
      "100000-count-one": "000K",
      "100000-count-other": "000K",
      "1000000-count-one": "0M",
      "1000000-count-other": "0M",
      "10000000-count-one": "00M",
      "10000000-count-other": "00M",
      "100000000-count-one": "000M",
      "100000000-count-other": "000M",
      "1000000000-count-one": "0B",
      "1000000000-count-other": "0B",
      "10000000000-count-one": "00B",
      "10000000000-count-other": "00B",
      "100000000000-count-one": "000B",
      "100000000000-count-other": "000B",
      "1000000000000-count-one": "0T",
      "1000000000000-count-other": "0T",
      "10000000000000-count-one": "00T",
      "10000000000000-count-other": "00T",
      "100000000000000-count-one": "000T",
      "100000000000000-count-other": "000T"
    }

Looking at the 'ja' file (for Japanese), you get something different:

  "short": {
    "decimalFormat": {
      "1000-count-other": "0千",
      "10000-count-other": "0万",
      "100000-count-other": "00万",
      "1000000-count-other": "000万",
      "10000000-count-other": "0000万",
      "100000000-count-other": "0億",
      "1000000000-count-other": "00億",
      "10000000000-count-other": "000億",
      "100000000000-count-other": "0000億",
      "1000000000000-count-other": "0兆",
      "10000000000000-count-other": "00兆",
      "100000000000000-count-other": "000兆"
    }

(If you see weird characters like å…† when you open it in your browser, you want to make sure you set your browser to show the file encoding as 'Unicode'.)

... It's not the most elegant solution, but it should help you find what you're looking for.

7
  • This is awesome. Now if only I knew of a library that knows how to leverage this... maybe ICU?
    – jlarson
    Commented Feb 1, 2014 at 0:47
  • 1
    Looks like in ICU4J there's a (CompactDecimalFormat class)[icu-project.org/apiref/icu4j/com/ibm/icu/text/…. Hope that helps! Commented Feb 1, 2014 at 4:47
  • Interestingly, the standard doesn't seem to talk about how to handle negative numbers; and CompactDecimalFormat does not support them either. Any advice?
    – jlarson
    Commented Feb 3, 2014 at 17:28
  • and it doesn't seem to clearly support currency formatting either.
    – jlarson
    Commented Feb 3, 2014 at 18:03
  • CLDR documentation says "If your language uses different formats for negative numbers than just adding "-" at the front, you can put in two patterns, separated by a semicolon. The first will be used for zero and positive values, while the second will be used for negative values." We see this in currentyFormat in English, for instance, gives "pattern": "¤#,##0.00;(¤#,##0.00)", tells you the currency sign comes before and negatives are written in parentheses). Commented Feb 3, 2014 at 21:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.