How do you convert a number to a string showing dollars and cents?
eg:
123.45 => '$123.45'
123.456 => '$123.46'
123 => '$123.00'
.13 => '$0.13'
.1 => '$0.10'
0 => '$0.00'
How do you convert a number to a string showing dollars and cents?
eg:
123.45 => '$123.45'
123.456 => '$123.46'
123 => '$123.00'
.13 => '$0.13'
.1 => '$0.10'
0 => '$0.00'
See the locale module.
This does currency (and date) formatting.
>>> import locale
>>> locale.setlocale( locale.LC_ALL, '' )
'English_United States.1252'
>>> locale.currency( 188518982.18 )
'$188518982.18'
>>> locale.currency( 188518982.18, grouping=True )
'$188,518,982.18'
The easiest answer is number_format()
.
echo "$ ".number_format($value, 2);
If you want your application to be able to work with multiple currencies and locale-aware formatting (1.000,00
for some of us Europeans for example), it becomes a bit more complex.
There is money_format()
but it doesn't work on Windows and relies on setlocale()
, which is rubbish in my opinion, because it requires the installation of (arbitrarily named) locale packages on server side.
If you want to seriously internationalize your application, consider using a full-blown internationalization library like Zend Framework's Zend_Locale and Zend_Currency.
There is a string method called zfill:
>>> '12344'.zfill(10)
0000012344
It will pad the left side of the string with zeros to make the string length N (10 in this case).
You can just do:
string.Format("{0}", yourDouble);
It will include only digits when necessary.
If you want other examples of formatting doubles to string check out this link.
EDIT: Based on your comment you want the ,
seperator so you could do:
string.Format("{0:0,0.########}", yourDouble);
Just put as many #
for the max number of decimal places you want to show. It will only show the digits when necessary but up to the maximum digits based on how many #
you include in the format. The #
means only show a digit if necessary so if you give a number like 123
with no decimal, it will display as 1,234
but if you give it 1234.456
, it will display as 1,234.456
. If you go beyond the max digits you specified they will be rounded.
EDIT: To fix your double zero scenario just change it to:
string.Format("{0:#,0.########}", yourDouble);
That should work perfectly now :)
PHP also has money_format().
Here's an example:
This function actually has tons of options, go to the documentation I linked to to see them.
Note: money_format is undefined in Windows.
UPDATE: Via the PHP manual: https://www.php.net/manual/en/function.money-format.php
WARNING: This function [money_format] has been DEPRECATED as of PHP 7.4.0. Relying on this function is highly discouraged.
Instead, look into NumberFormatter::formatCurrency.