免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4491 | 回复: 1
打印 上一主题 下一主题

PHP数字格式化,数字每三位加逗号,可以保留小数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-13 21:31 |只看该作者 |倒序浏览
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. 1.function num_format($num){   
  2. 2.  
  3. 3.   if(!is_numeric($num)){   
  4. 4.  
  5. 5.       return false;   
  6. 6.  
  7. 7.     }   
  8. 8.  
  9. 9.     $num = explode('.',$num);//把整数和小数分开   
  10. 10.  
  11. 11.   $rl = $num[1];//小数部分的值   
  12. 12.  
  13. 13.   $j = strlen($num[0]) % 3;//整数有多少位   
  14. 14.  
  15. 15.    $sl = substr($num[0], 0, $j);//前面不满三位的数取出来   
  16. 16.  
  17. 17.    $sr = substr($num[0], $j);//后面的满三位的数取出来   
  18. 18.  
  19. 19.    $i = 0;   
  20. 20.  
  21. 21.     while($i <= strlen($sr)){   
  22. 22.  
  23. 23.        $rvalue = $rvalue.','.substr($sr, $i, 3);//三位三位取出再合并,按逗号隔开   
  24. 24.  
  25. 25.       $i = $i + 3;   
  26. 26.  
  27. 27.    }   
  28. 28.  
  29. 29.   $rvalue = $sl.$rvalue;   
  30. 30.  
  31. 31.    $rvalue = substr($rvalue,0,strlen($rvalue)-1);//去掉最后一个逗号   
  32. 32.  
  33. 33.     $rvalue = explode(',',$rvalue);//分解成数组   
  34. 34.  
  35. 35.     if($rvalue[0]==0){   
  36. 36.  
  37. 37.      array_shift($rvalue);//如果第一个元素为0,删除第一个元素   
  38. 38.  
  39. 39.   }   
  40. 40.  
  41. 41.     $rv = $rvalue[0];//前面不满三位的数   
  42. 42.  
  43. 43.    for($i = 1; $i < count($rvalue); $i++){   
  44. 44.  
  45. 45.       $rv = $rv.','.$rvalue[$i];   
  46. 46.  
  47. 47.     }   
  48. 48.  
  49. 49.   if(!emptyempty($rl)){   
  50. 50.  
  51. 51.        $rvalue = $rv.'.'.$rl;//小数不为空,整数和小数合并   
  52. 52.  
  53. 53.   }else{   
  54. 54.  
  55. 55.       $rvalue = $rv;//小数为空,只有整数   
  56. 56.  
  57. 57.   }   
  58. 58.    return $rvalue;   
  59. 59.  
  60. 60.}   
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-12-19 22:24 |只看该作者
学习学习...谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP