Currency Formatting
Many web pages and documents publish currency amounts. Shopping cart items and totals, for example, and invoices.
Some numbers need conversion to the proper currency format. Examples are totals from adding item prices and calculated sales tax, numbers from a database, and numbers provided in a form.
As an example of use, existing software that adds those totals and calculates taxes and shipping charges can be modified to incorporate one of the two functions presented in this article for converting the result into currency format.
One of the functions is JavaScript and the other is PHP. Use whichever is applicable for your project.
Different currencies use different characters to show groups of thousands and the decimal part. With US Dollars, it's a comma and a period (as in 1,234.56). The functions in this article let you specify which characters to use. Also the number of decimal places for the currency.
If you want to study the nitty-gritty of formating for various currencies, see this currency internationalization page.
The functions presented in this article don't try to format for every currency. But most can be formatted.
Both functions do the same work. They have the same function name and similar variable names. The three customizable variables are spelled the same, except the variables in PHP begin with a "$" character.
When a number has more decimals than the currency format, it rounds the currency decimal.
When you know how to use one you also know how to use the other.
It's simple to implement and simple to use.
Try it here by typing in a number. It responds with USD currency formatting. (Specify other formatting in the source code of the function for other currency.)
Type a number: | |
Currency formatted: | $ |
Put the function into the source code of your web page and update the three customizable variables. Then use the function by calling it with the number you want formatted.
Print the returned value or use it elsewhere in your code.
Here are the similarities and differences of the functions, one for JavaScript and one for PHP. (The source code with notes follow the tables.)
The JavaScript Function | |
---|---|
Function name | CurrencyFormat() |
Number of source code lines | 31 |
Variable to specify number of decimal places | decimalplaces |
Variable to specify the decimal character | decimalcharacter |
Variable to specify thousands group separater | thousandseparater |
The PHP Function | |
---|---|
Function name | CurrencyFormat() |
Number of source code lines | 7 |
Variable to specify number of decimal places | $decimalplaces |
Variable to specify the decimal character | $decimalcharacter |
Variable to specify thousands group separater | $thousandseparater |
The Source Code
Here's the source code for the JavaScript function. Implementation and use notes follow.
<script type="text/javascript"> function CurrencyFormat(number) { var decimalplaces = 2; var decimalcharacter = "."; var thousandseparater = ","; number = parseFloat(number); var sign = number < 0 ? "-" : ""; var formatted = new String(number.toFixed(decimalplaces)); if( decimalcharacter.length && decimalcharacter != "." ) { formatted = formatted.replace(/\./,decimalcharacter); } var integer = ""; var fraction = ""; var strnumber = new String(formatted); var dotpos = decimalcharacter.length ? strnumber.indexOf(decimalcharacter) : -1; if( dotpos > -1 ) { if( dotpos ) { integer = strnumber.substr(0,dotpos); } fraction = strnumber.substr(dotpos+1); } else { integer = strnumber; } if( integer ) { integer = String(Math.abs(integer)); } while( fraction.length < decimalplaces ) { fraction += "0"; } temparray = new Array(); while( integer.length > 3 ) { temparray.unshift(integer.substr(-3)); integer = integer.substr(0,integer.length-3); } temparray.unshift(integer); integer = temparray.join(thousandseparater); return sign + integer + decimalcharacter + fraction; } </script>
JavaScript Function Implementation and Use Notes
Paste the JavaScript anywhere in the source code of your web page where JavaScript can run. Update the 3 customization variables:
-
var decimalplaces = 2; If needed, change the number 2 for the number of decimal places the currency formatting required. (The number 0 is acceptable.)
-
var decimalcharacter = "."; If needed, replace the period between the quotation marks with another character. The character separates the whole number from the decimal. For no decimal character, remove the period.
-
var thousandseparater = ","; If needed, change the comma between the quotation marks. The character (which may be a space) will separate the groups of thousands. For no separation, remove the comma.
To use the function, call it with the number to be currency formatted. Here's an example, which stores a currency format in the variable amount. It's followed by three ways the variable amount can be used.
var amount = CurrencyFormat(12345.6789); alert(amount+" USD"); // Alert box with a space and currency code appended to amount. document.write("<b>amount+" USD</b>"); // Print amount with space and currency code appended. document.getElementById("DivOrSpanIDvalue").innerHTML = amount; // Update content of an HTML container tag with amount.
Here's the source code for the PHP function. Implementation and use notes follow.
<?php function CurrencyFormat($number) { $decimalplaces = 2; $decimalcharacter = '.'; $thousandseparater = ','; return number_format($number,$decimalplaces,$decimalcharacter,$thousandseparater); } ?>
PHP Function Implementation and Use Notes
Paste the PHP anywhere in the source code of your web page where PHP can run. Update the 3 customization variables:
-
$decimalplaces = 2; If needed, change the number 2 for the number of decimal places the currency formatting required. (The number 0 is acceptable.)
-
$decimalcharacter = '.'; If needed, replace the period between the quotation marks with another character. The character separates the whole number from the decimal. For no decimal character, remove the period.
-
$thousandseparater = ','; If needed, change the comma between the quotation marks. The character (which may be a space) will separate the groups of thousands. For no separation, remove the comma.
To use the function, call it with the number to be currency formatted. Here's an example, which stores a currency format in the variable $amount. It's followed by three ways the variable $amount can be used.
$amount = CurrencyFormat(12345.6789); echo '<b>$' . $amount . ' USD</b>'; // Print the amount with currency symbol and currency code designations, bolded. $list[] = $amount; // Store $amount to an array $list for later use. echo '<tr><td>'.implode('</td><td>',$list).'</td></tr>'; // Print a row of table data with currency amounts stored in $list.
Both the JavaScript and PHP versions of the currency formatting function can return the format of most currencies in use today.
(This article first appeared in Possibilities ezine.)
Will Bontrager