【问题标题】:Prevent number_format from rounding numbers - add commas and keep the decimal point - PHP防止 number_format 舍入数字 - 添加逗号并保留小数点 - PHP
【发布时间】:2016-11-01 12:00:11
【问题描述】:

数字格式添加了我想要的逗号,但删除了小数。

echo number_format("1000000.25");

这将返回 1,000,000

我希望它返回 1,000,000.25

我需要逗号和小数,没有任何数字四舍五入。我所有的值都是小数。它们的长度各不相同。

我必须使用数字格式以外的东西吗?

【问题讨论】:

    标签: php decimal number-formatting


    【解决方案1】:
    $number = '1000000.25';
    echo number_format($number, strlen(substr(strrchr($number, "."), 1)));
    

    说明: 数字格式采用第二个参数,该参数指定docs 中指出的所需小数位数。 This堆栈溢出答案告诉您如何获取您提供的字符串的小数位数

    【讨论】:

    • 很好,我没想过要寻找获得 len xD 的方法。很酷的解决方案
    【解决方案2】:

    如果您所说的长度不同与小数部分有关,请查看以下代码:

    function getLen($var){
        $tmp = explode('.', $var);
        if(count($tmp)>1){
            return strlen($tmp[1]);
        }
    }
    $var = '1000000.255555'; // '1000000.25'; // '1000000';
    echo number_format($var, getLen($var));
    


    一些测试
    • 1000000.255555 的输出:

    1,000,000.255555


    1000000.25 的输出:

    1,000,000.25


    1000000 的输出:

    1,000,000


    它计算. 之后有多少个字符,并将其用作number_format 函数中的参数;

    否则只使用一个常数而不是函数调用。


    还有一些参考...

    来自manual -> number_format()

    string number_format ( float $number [, int $decimals = 0 ] )
    

    你可以在描述中看到

    数字
    正在格式化的数字。

    小数
    设置小数位数。

    还有一点:

    [...]如果给定两个参数,数字将被格式化为小数 小数点前面有一个点(“.”),每个小数之间有一个逗号(“,”) 数千人。

    【讨论】:

      【解决方案3】:

      number_format() 的文档表明第二个参数用于指定小数:

      echo number_format('1000000.25', 2);
      

      参考:http://php.net/manual/en/function.number-format.php

      【讨论】:

        猜你喜欢
        • 2016-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-31
        • 1970-01-01
        • 2022-11-18
        相关资源
        最近更新 更多