Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP中JS:something.toFixed()的确切等价物是什么?_Javascript_Php - Fatal编程技术网

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

Javascript PHP中JS:something.toFixed()的确切等价物是什么?,javascript,php,Javascript,Php,如果我有a.toFixed(3)在javascript中('a'等于2.4232)php中检索该值的确切等效命令是什么?我搜索了它,但没有找到正确的答案说明。在PHP中,您可以使用一个名为的函数。您是否尝试过以下方法: round(2.4232, 2); 这将给你一个2.42的答案 更多信息可以在这里找到:直接等价物是sprintf('%.03F',$A)。这将把有问题的值格式化为一个带3位小数的数字。如果需要,它也会取整。我发现sprintf和number\u格式都会取整数字,所以我使用了这

如果我有
a.toFixed(3)
在javascript中('a'等于2.4232)php中检索该值的确切等效命令是什么?我搜索了它,但没有找到正确的答案说明。

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

您是否尝试过以下方法:

round(2.4232, 2);
这将给你一个2.42的答案


更多信息可以在这里找到:

直接等价物是
sprintf('%.03F',$A)
。这将把有问题的值格式化为一个带3位小数的数字。如果需要,它也会取整。

我发现
sprintf
number\u格式都会取整数字,所以我使用了这个:

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

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

  • 它将数字四舍五入到小数点后三位
  • 如果需要始终有三个十进制数字,则用“0”字符填充
以下是一个实用功能:

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

toFixed($a, 3); // 2.423

翻译如下:

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

直截了当的解决方案是在php中使用is
number\u format()


我认为PHPs
round()
将尽可能地接近你的目标…除了
sprintf
number\u格式
是最接近的。如果将其用于round(2.4255,2),它将返回2。43@DănuțMihaiFlorian它取决于您设置为
模式的内容
如果是64.000000,则返回64。我想要64张。00@NalinAgrawal:您可能需要将其转换为double才能获得该值,尽管您可能希望在页面上显示该值,在这种情况下,有一些字符串格式化程序将保持一定的十进制精度,尽管这与字符串有关,而不是与数字有关。tested。这与14年8月28日19:15(4年半前)的@cassiodoroVicinetti的回答有何不同
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
number_format(2.4232, 3);