A-A+

PHP+MYSQL格式化返回类型的问题

2019年10月13日 PHP技术文章 暂无评论 阅读 0 views 次

MYSQL数据库中的类型我们可以定义各种类型,但如果我们要查询MYSQL,返回值的类型就不一定了,最近主要遇到的就是数字类型的问题,比如PHP格式化MYSQL之后返回float类型,echo之后,小数位会包含多个0,这显示不是我们要的结果,这个时候就要使用float把多余的0去掉,也就是floatval函数化,如果纯数字化的话,也可以直接输出一个0值,这主要看我们想要输出的结果,如果是关于money的值的话,就需要保留小数位,比如我们要保留两位小数的话,就可以使用number_format($num, 2);

其中 number_format 函数对我们所要函数化的数字进行了四舍五入,对于一些精密度较高的数字来说,我们不想四舍五入,但还要保留两位小数的话,就可以使用如下的方法:

  1. echo f('1001.334534', 2) . '<br data-filtered="filtered">'; // 1001.334534  
  2.   
  3. echo f('-1001.000', 2) . '<br data-filtered="filtered">'; // -1001.00  
  4.   
  5. echo f('1001.3', 5) . '<br data-filtered="filtered">'; // 1001.30000  
  6.   
  7. echo f('1001.33') . '<br data-filtered="filtered">'; // 1001.33  
  8.   
  9. echo f('1001.000') . '<br data-filtered="filtered">'; // 1001  
  10.   
  11. // 格式化小数,但不四舍五入,如有小数则全保留,无小数则添加0;  
  12.   
  13. function f($num$v = 0){  
  14.   
  15.   $num = floatval($num);  
  16.   
  17.   if ($v > 0){  
  18.     $num = '' . $num;  
  19.   
  20.     $arr = explode('.'$num);  
  21.   
  22.     if (count($arr) === 1){  
  23.       $num .= '.' . str_repeat('0', $v);  
  24.     }else{  
  25.       $v -= strlen($arr[1]);  
  26.       if ($v > 0)  
  27.         $num .= str_repeat('0', $v);  
  28.     }//www.xiariboke.net  
  29.   }  
  30.   return $num;  
  31. }  

我们将这个方法封装成 f 方法,然后各种调用,不管保留几位小数,都是高精度,且不进行四舍五入。

标签:

给我留言