PHP数字格式化,每三位逗号分隔数字,可以保留小数
在报价的时候为了给浏览者更清晰明确的数字,所以需要用到数字格式化,有两种方法,一种自己写函数,另一种当然是系统自带的,其实我更喜欢系统自带的。
先来系统简单的:
string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] ):
示例代码
echo number_format('169856420');
输出结果将为:
169,856,420
示例代码
echo number_format('1000000',2);
输出结果
1,000,000.00
示例代码
echo number_format('1000000',2,',','.');
输出结果
1.000.000,00
再看写的函数:
function num_format($num){ if (!is_numeric($num)) { return false; } $num = explode('.', $num); // 把整数和小数分开 $rl = $num[1]; // 小数部分的值 $j = strlen($num[0]) % 3; // 整数有多少位 $sl = substr($num[0], 0, $j); // 前面不满三位的数取出来 $sr = substr($num[0], $j); // 后面的满三位的数取出来 $i = 0; while ($i <= strlen($sr)) { $rvalue = $rvalue . ',' . substr($sr, $i, 3); // 三位三位取出再合并,按逗号隔开 $i = $i + 3; } $rvalue = $sl . $rvalue; $rvalue = substr($rvalue, 0, strlen($rvalue) - 1); // 去掉最后一个逗号 $rvalue = explode(',', $rvalue); // 分解成数组 if ($rvalue[0] == 0) { array_shift($rvalue); // 如果第一个元素为0,删除第一个元素 } $rv = $rvalue[0]; // 前面不满三位的数 for ($i = 1; $i < count($rvalue); $i++) { $rv = $rv . ',' . $rvalue[$i]; } if (!empty($rl)) { $rvalue = $rv . '.' . $rl; // 小数不为空,整数和小数合并 } else { $rvalue = $rv; // 小数为空,只有整数 } return $rvalue; }