【问题标题】:What is the exact equivalent of JS: something.toFixed() in PHP?什么是 JS:something.toFixed() 在 PHP 中的确切等价物?
【发布时间】:2013-12-18 22:49:12
【问题描述】:

如果我在 javascript 中有a.toFixed(3);('a' 等于 2.4232),那么在 php 中检索它的确切等效命令是什么?我搜索了它,但没有找到答案附加的适当解释。

【问题讨论】:

  • 我认为 PHPs round() 将尽可能接近您开箱即用...php.net/round
  • 除了sprintfnumber_format是最接近的。

标签: javascript php


【解决方案1】:

在 PHP 中完全等效的命令是 function number_format:

number_format($a, 3, '.', ""); // 2.423
  • 将数字四舍五入到小数点后第三位
  • 如果需要始终包含三个十进制数字,则填充“0”字符

这是一个实用的功能:

function toFixed($number, $decimals) {
  return number_format($number, $decimals, '.', "");
}

toFixed($a, 3); // 2.423

【讨论】:

    【解决方案2】:

    你试过这个吗:

    round(2.4232, 2);
    

    这会给你一个 2.42 的答案。

    更多信息可以在这里找到:http://php.net/manual/en/function.round.php

    【讨论】:

    • 如果将其用于 round(2.4255, 2),它将返回 2.43
    • @DănuțMihaiFlorian 这取决于您设置为 mode php.net/manual/en/…
    • 如果是 64.000000,则返回 64。我想得到 64.00
    • @NalinAgrawal:您可能必须将其转换为双精度才能获得它,但似乎您可能希望在页面上显示它,在这种情况下,字符串格式化程序将保持某些小数精度,尽管这与字符串相关而不是数字相关。
    【解决方案3】:

    我发现sprintfnumber_format 都是整数,所以我使用了这个:

    $number = 2.4232;
    $decimals = 3;
    $expo = pow(10,$decimals);
    $number = intval($number*$expo)/$expo; //  = 2423/100
    

    【讨论】:

      【解决方案4】:

      直接等效的是sprintf('%.03F', $a)。这会将有问题的值格式化为具有 3 个十进制数字的数字。如果需要,它也会四舍五入。

      【讨论】:

      • 经过测试。不圆。
      【解决方案5】:

      直接的解决方案是在 php 中使用number_format()

      number_format(2.4232, 3);
      

      【讨论】:

      • 这与@cassiodoroVicinetti 2014 年 8 月 28 日 19:15(4 1/2 年前)的回答有何不同?
      • 这个很简单
      【解决方案6】:

      在 PHP 中,您可以使用名为 round 的函数。

      【讨论】:

        【解决方案7】:

        翻译如下:

        function toFixed($number, $dec_length){
            $pos=strpos($number.'', ".");
            if($pos>0){
                $int_str=substr($number,0,$pos);
                $dec_str=substr($number, $pos+1);
                if(strlen($dec_str)>$dec_length){
                    return $int_str.($dec_length>0?'.':'').substr($dec_str, 0,$dec_length);
                }else{
                    return $number;
                }
            }else{
                return $number;
            }
        }
        
        
        //toFixed(1234.678, 0) = 1234
        //toFixed(1234.678, 1) = 1234.6
        //toFixed(1234.678, 2) = 1234.67
        //toFixed(1234.678, 4) = 1234.678
        

        【讨论】:

          猜你喜欢
          • 2012-01-20
          • 2014-10-09
          • 2021-11-29
          • 1970-01-01
          • 2023-03-22
          • 1970-01-01
          • 2011-04-23
          • 1970-01-01
          • 2012-09-14
          相关资源
          最近更新 更多