最近做统计,涉及到数据小数位的问题,下面总结:
- 第一种方式 round()
round($a, $num)
//四舍五入保留小数a的小数点后num位
//结果为浮点类型
//小数点位数不够,不会填充0
- 第二种方式 floor($a) / 100
$a *= 100;
//先将小数扩大一百倍
//floor 向上取整 再 / 100
floor($a) / 100
//实现小数点后两位
//结果为浮点数
//小数点位数不够,不会填充0
- 第三种方式 sprintf(’%.2f’, $a)
sprintf('%.2f',$a)
//强大的格式化函数
//结果为字符串
//小数点位数不够,填充0
- 第四种方式 - 使用字符串函数切割(过于繁琐。。。)
strpos 获取小数点位置
substr 向小数点后位数切割
//结果为字符串类型
//小数点位数不够,不会填充 0
可以再使用字符串的填充函数手动补 0
上代码
$a = 0.5;
$b = 0.33333333;
$c = strval($b);
$key = strpos($c,'.');
var_dump(substr($c,0,$key+3));
var_dump(sprintf('%.2f',$a));
var_dump(sprintf('%.2f',$b));
var_dump(round($b,2));
var_dump(floor($b*100)/100);
输出结果:
string(4) "0.33"
string(4) "0.50"
string(4) "0.33"
float(0.33)
float(0.33)