PHP程式想要格式化金額數字,顯示千位號與指定顯示小數幾位要使用number_format()函式,
但是如果要顯示千位號但不顯示小數位後方的零,如下面例子 :
但是如果要顯示千位號但不顯示小數位後方的零,如下面例子 :
$val1 = 12345.67;
echo number_format($val1,3); // (1) 顯示 12,345.670
$val1 = 12345.6;
echo number_format($val1,3); // (2) 顯示 12,345.600
$val1 = 12345;
echo number_format($val1,3); // (3) 顯示 12,345.000
如果我希望(1)顯示 12,345.67 (2)顯示 12,345.6 (3) 顯示 12,345
也就是不想要顯示數字後方的零,要怎麼做?
寫一個function number_format_notrailingzeros()
傳地參數 $number為要格式化的數字,$decimal是要顯示最長的小數位數,如下
function number_format_notrailingzeros($number,$decimal){
$num = number_format($number,$decimal);
$pos = strpos($num, ".");
if($pos === false) { // 無小數
return $num;
}else{ // 有小數
return rtrim(rtrim($num, "0"), "."); // 先移除最後面的零, 再先移除最後面的小數點
}
}
然後,用上面的number_format_notrailingzeros() 取代number_format(), 如下 :
$val1 = 12345.67;
echo number_format_notrailingzeros($val1,3); // (1) 顯示 12,345.67
$val1 = 12345.6;
echo number_format_notrailingzeros($val1,3); // (2) 顯示 12,345.6
$val1 = 12345;
echo number_format_notrailingzeros($val1,3); // (3) 顯示 12,345
沒有留言:
張貼留言
歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)