South African Number Formats

A friend of mine recently asked for help with Excel number formatting. His version of Excel was using a comma for the decimal point and it was irritating him as it seemed wrong. I then saw the use of spaces for the thousands separator and figured it was using the wrong region settings. It turned out that the region settings were correct and we had both been subjected to the Americanisation of a standard. I found that other people had experienced a similar problem. Technically speaking, the official format for numbers in South Africa is spaces for the thousands separator and a comma for the decimal mark.

1 234 567,89

The American variation that we had become used to is commas for the thousands separator and a full stop for the decimal point.

1,234,567.89

In programming, I have only ever seen the use of the full stop for the decimal mark, and no thousands separator. However when printing numbers for humans to read, its important to use the thousands separator and to use a number format that the largest group of readers will easily understand.

If your readers are South African, this handy JavaScript function will format your numbers correctly with 2 decimal places, which is mostly useful for displaying currency values. This code is a modified version of this script.

function za_format(number) {
  number = parseInt(number).toFixed(2);
  number += '';
  var x = number.split('.');
  var x1 = x[0];
  var x2 = x.length > 1 ? ',' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ' ' + '$2');
  }
  return x1 + x2;
}

Leave a Reply

Your email address will not be published. Required fields are marked *