A-A+
PHP+MYSQL格式化返回类型的问题
MYSQL数据库中的类型我们可以定义各种类型,但如果我们要查询MYSQL,返回值的类型就不一定了,最近主要遇到的就是数字类型的问题,比如PHP格式化MYSQL之后返回float类型,echo之后,小数位会包含多个0,这显示不是我们要的结果,这个时候就要使用float把多余的0去掉,也就是floatval函数化,如果纯数字化的话,也可以直接输出一个0值,这主要看我们想要输出的结果,如果是关于money的值的话,就需要保留小数位,比如我们要保留两位小数的话,就可以使用number_format($num, 2);
其中 number_format 函数对我们所要函数化的数字进行了四舍五入,对于一些精密度较高的数字来说,我们不想四舍五入,但还要保留两位小数的话,就可以使用如下的方法:
- echo f('1001.334534', 2) . '<br data-filtered="filtered">'; // 1001.334534
- echo f('-1001.000', 2) . '<br data-filtered="filtered">'; // -1001.00
- echo f('1001.3', 5) . '<br data-filtered="filtered">'; // 1001.30000
- echo f('1001.33') . '<br data-filtered="filtered">'; // 1001.33
- echo f('1001.000') . '<br data-filtered="filtered">'; // 1001
- // 格式化小数,但不四舍五入,如有小数则全保留,无小数则添加0;
- function f($num, $v = 0){
- $num = floatval($num);
- if ($v > 0){
- $num = '' . $num;
- $arr = explode('.', $num);
- if (count($arr) === 1){
- $num .= '.' . str_repeat('0', $v);
- }else{
- $v -= strlen($arr[1]);
- if ($v > 0)
- $num .= str_repeat('0', $v);
- }//www.xiariboke.net
- }
- return $num;
- }
我们将这个方法封装成 f 方法,然后各种调用,不管保留几位小数,都是高精度,且不进行四舍五入。