我习惯用 number_format 函数,返回类型为字符串:

number_format($price, 2, '.', '');

后面两个参数依次为小数点符号和千分之符号(默认,,所以需要手动去除)

还有一个专门处理字符串格式化输出的方法 sprintf

sprintf('%.'.$precision.'f', $price);

另附四舍五入方法 round ($val, $precision = 0, $mode = PHP_ROUND_HALF_UP),最后一个参数表示舍入模式。

需要注意的是,php 中的小数末尾零会被自动省略,round 函数精度参数表示最大精度,如果小数部分为 0,最终返回的会是一个整数。所以想要保留固定位数的小数部分,需要用以上两个函数进行二次修饰。

destoon 处理小数精度的函数:

function dround($var, $precision = 2, $sprinft = false) {
    $var = round(floatval($var), $precision);
    if($sprinft) $var = sprintf('%.'.$precision.'f', $var);
    return $var;
}