什么是JS的确切等价物:PHP中的something.toFixed()

What is the exact equivalent of JS: something.toFixed() in PHP?

本文关键字:中的 PHP something toFixed 等价物 JS 什么      更新时间:2023-09-26

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

PHP 中完全相同的等效命令是函数 number_format:

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

这是一个实用功能:

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

你试过这个吗:

round(2.4232, 2);

这将给你一个 2.42 的答案。

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

我发现sprintfnumber_format都对数字进行了四舍五入,所以我使用了这个:

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

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

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

number_format(2.4232, 3);

在PHP中,你可以使用一个名为round的函数。

这是翻译:

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

这个怎么样

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

这样称呼它

to_fixed(2.4232, 3); //  2.423