PHP数字格式化

下面看一下ecshop一个数字格式化为金额的函数(小数点保留二位)

 
/**
 * 格式化商品价格
 *
 * @access  public
 * @param   float   $price  商品价格
 * @return  string
 */
function price_format($price, $change_price = true)
{
    if ($change_price && defined('ECS_ADMIN') === false)
    {
        switch ($GLOBALS['_CFG']['price_format'])
        {
            case 0:
                $price = number_format($price, 2, '.', '');
                break;
            case 1: // 保留不为 0 的尾数
                $price = preg_replace('/(.*)(\\.)([0-9]*?)0+$/', '\1\2\3', number_format($price, 2, '.', ''));
 
                if (substr($price, -1) == '.')
                {
                    $price = substr($price, 0, -1);
                }
                break;
            case 2: // 不四舍五入,保留1位
                $price = substr(number_format($price, 2, '.', ''), 0, -1);
                break;
            case 3: // 直接取整
                $price = intval($price);
                break;
            case 4: // 四舍五入,保留 1 位
                $price = number_format($price, 1, '.', '');
                break;
            case 5: // 先四舍五入,不保留小数
                $price = round($price);
                break;
        }
    }
    else
    {
        $price = number_format(floatval($price), 2, '.', '');
    }
 
    return sprintf($GLOBALS['_CFG']['currency_format'], $price);
}
 
// 函数测试
$price = 123.333;
echo price_format($price);
// 打印出来的结果是:¥123.33


里面最主要是用到了number_format这个函数对数值出行了格式化

$price = number_format(floatval($price), 2, ‘.’, ”);

上面的意思是把传出来的数值转成浮点数,再保留两位,用点号分隔