当前位置 博文首页 > 文章内容

    PHP保留两位小数的数字该如何输出

    作者:shunshunshun18 栏目:未分类 时间:2021-12-28 11:20:37

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    当我们需要将输出的数据保留两位小数时,这时我们该怎么去做?今天就向大家介绍一下php把一个数字格式化为保留两位小数的方法,有需要的可以参考参考。

    由于业务需要,需要把一个数字格式化为保留两位小数(四舍五入):

    第一种方案:round

    代码:

    $aaa = 15.0393;
    var_dump(round($aaa, 2));
    $bbb = 16.1;
    var_dump(round($bbb, 2));
    $ccc = 13;
    var_dump(round($ccc, 2));
    /**
    运行:
    double(15.04)
    double(16.1)
    double(13)
     */

    这种方案有问题,如果原来的数字只有一个小数或者是不带有小数的话,那么只会照常输出而不会在后面补0。如果向上取整或者是向下取整的话使用ceil或者是floor。

    第二种方案:number_format

    代码:

    $aaa = 15.0393;
    var_dump(number_format($aaa, 2, '.', ''));
    
    $bbb = 16.1;
    var_dump(number_format($bbb, 2, '.', ''));
    
    $ccc = 13;
    var_dump(number_format($ccc, 2, '.', ''));
    
    /**
    运行:
    string(5) "15.04"
    string(5) "16.10"
    string(5) "13.00"
     */

    这种方案虽然说可以在后面补0,但是会被转化为字符串。

    第三种方案:sprintf

    代码:

    $aaa = 15.0393;
    var_dump(sprintf('%.2f', $aaa));
    
    $bbb = 16.1;
    var_dump(sprintf('%.2f', $bbb));
    
    $ccc = 13;
    var_dump(sprintf('%.2f', $ccc));
    
    /**
    运行:
    string(5) "15.04"
    string(5) "16.10"
    string(5) "13.00"
     */

    和上面的一样。

    // ToDo:暂没有找到好的方案能后面补0并且输出的是数字类型而不是字符串的。

    推荐学习: