【问题标题】:simple regex in php, formatting decimal number [duplicate]php中的简单正则表达式,格式化十进制数
【发布时间】:2011-08-28 00:56:04
【问题描述】:

我需要将数字转换为后面有 .00,但前提是数字是整数,或者小数点后只有 1 个数字,如下所示:

1.4 = 1.40
45 = 45.00
34.77 = 34.77

在这个简单的案例中使用什么 reg exp?

【问题讨论】:

标签: php regex


【解决方案1】:

您也可以使用printfsprintf

printf("%01.2f", '34.77');
$formatted_num = sprintf("%01.2f", '34.77');

【讨论】:

  • 良好的调用 - 如果您不需要千位分隔符,运行速度比 number_format() 快​​ 40%。
【解决方案2】:
number_format($number, 2, '.', '');

PHP.net 上阅读更多信息。您无需确定数字是否为整数 - 只要是数字,它将被格式化为两位小数。

如果您想要千位分隔符,请将最后一个参数更改为 ','

【讨论】:

    【解决方案3】:

    查看PHP的内置函数number_format

    您可以将其传递给变量,它会将其格式化为正确的小数位

        $number = 20;
        if (is_int($number)) {
            $number = number_format($number, 2, '.', '');
        }
    

    【讨论】:

      【解决方案4】:

      阅读number_format

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

      【讨论】:

        【解决方案5】:
        $num = 0.00638835;
        
        $avg = sscanf($num,"%f")[0] /100;
        
        echo sprintf("%.10f", $avg);
        
        result 0.0000638835
        

        【讨论】:

        • 你能解释一下你在做什么以及它是如何工作的
        • sscanf — 根据格式解析来自字符串的输入
        • 函数 sscanf() 是 printf() 的输入模拟。 sscanf() 从字符串 str 中读取并根据指定的格式对其进行解释,该格式在 sprintf() 的文档中有所描述。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-25
        • 2012-07-12
        • 1970-01-01
        相关资源
        最近更新 更多