- 论坛徽章:
- 0
|
PHP数字格式化,数字每三位加逗号,可以保留小数
在报价的时候为了给浏览者更清晰明确的数字,所以需要用到数字格式化,有两种方法,一种自己写函数,另一种当然是系统自带的,其实我更喜欢系统自带的。
先来系统简单的:
string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] ):
查看代码1 echo number_format('169856420');
输出结果将为:169,856,420
查看代码1 echo number_format('1000000',2);
输出结果将为:1,000,000.00
查看代码1 echo number_format('1000000',2,',','.');
输出结果将为:1.000.000,00
再看写的函数:
Php代码- 1.function num_format($num){
- 2.
- 3. if(!is_numeric($num)){
- 4.
- 5. return false;
- 6.
- 7. }
- 8.
- 9. $num = explode('.',$num);//把整数和小数分开
- 10.
- 11. $rl = $num[1];//小数部分的值
- 12.
- 13. $j = strlen($num[0]) % 3;//整数有多少位
- 14.
- 15. $sl = substr($num[0], 0, $j);//前面不满三位的数取出来
- 16.
- 17. $sr = substr($num[0], $j);//后面的满三位的数取出来
- 18.
- 19. $i = 0;
- 20.
- 21. while($i <= strlen($sr)){
- 22.
- 23. $rvalue = $rvalue.','.substr($sr, $i, 3);//三位三位取出再合并,按逗号隔开
- 24.
- 25. $i = $i + 3;
- 26.
- 27. }
- 28.
- 29. $rvalue = $sl.$rvalue;
- 30.
- 31. $rvalue = substr($rvalue,0,strlen($rvalue)-1);//去掉最后一个逗号
- 32.
- 33. $rvalue = explode(',',$rvalue);//分解成数组
- 34.
- 35. if($rvalue[0]==0){
- 36.
- 37. array_shift($rvalue);//如果第一个元素为0,删除第一个元素
- 38.
- 39. }
- 40.
- 41. $rv = $rvalue[0];//前面不满三位的数
- 42.
- 43. for($i = 1; $i < count($rvalue); $i++){
- 44.
- 45. $rv = $rv.','.$rvalue[$i];
- 46.
- 47. }
- 48.
- 49. if(!emptyempty($rl)){
- 50.
- 51. $rvalue = $rv.'.'.$rl;//小数不为空,整数和小数合并
- 52.
- 53. }else{
- 54.
- 55. $rvalue = $rv;//小数为空,只有整数
- 56.
- 57. }
- 58. return $rvalue;
- 59.
- 60.}
复制代码 |
|