貨幣金額數值轉換加上逗號「,」 for PHP
在PHP要顯示貨幣金額,就是有加上逗號「,」的數字是很容易的
原本以為是要使用printf 函式,結果去查了一下,有個number_format 函式就可以達到
以下為他的語法
string number_format(float number, int [decimals], string [dec_point], string [thousands_sep]);
如想看更詳細的說明,請至 http://php.net/manual/en/function.number-format.php
所以我們可以用以下指令
就可以得到1,000,000.1234,看起來還蠻容易的,結果再進一步的測試,發現怪怪的
當我的值為 10000000000000.4232326 應該可以得到
沒想到結果不對了,竟然得到如下的資料,小數的數值不對了
多測了幾組,都發現這狀況,看來在數值大於一定位數時,就會有錯亂,應該是PHP數值的變數接受的位數有限,所以大於的數值就可能會補數來補數去的吧..反正就是亂了
所以為了這種位數超大的值,小弟寫了一個小函式,改用字串的方式處理,就可以排除此問題
$data1=number_format(substr($data,0,strrpos($data,”.”)==0?strlen($data):strrpos($data,”.”)));
$data2=substr( strrchr( $data, “.” ), 1 );
if($data2==0) $data3=””;
else {
if(strlen($data2)>$n) $data3=substr($data2,0,$n);
else $data3=$data2;
$data3=”.”.$data3;
}
return $data1;
}
傳入值為$data 就是你要轉換的數值,$n就是小數點後面的位數
除了排除這個問題,在使用number_format時發現如果設定小數位數四位,如不足四數就會補零 。例如: 100000.12 會顯示 100,000.1200 ,所以小弟也順便調整,可以把後面的零給取消掉。在此提供給一樣遇到這問題的人一個方法(不一定是好方法,但一定是可行的方法)
近期留言