Если у меня есть a.toFixed(3);
в javascript ('a', равный 2.4232), что такое точная эквивалентная команда в php для ее получения? Я искал его, но не нашел подходящего объяснения, прилагаемого к ответам.
Каков точный эквивалент JS: something.toFixed() в PHP?
Ответ 1
Я обнаружил, что sprintf
и number_format
оба вокруг числа, поэтому я использовал это:
$number = 2.4232;
$decimals = 3;
$expo = pow(10,$decimals);
$number = intval($number*$expo)/$expo; // = 2423/100
Ответ 2
Точная эквивалентная команда в PHP - это функция number_format:
number_format($a, 3, '.', ""); // 2.423
- округляет число до третьего знака после запятой
- при необходимости он заполняется символами "0", чтобы всегда иметь три десятичных знака
Вот практическая функция:
function toFixed($number, $decimals) {
return number_format($number, $decimals, '.', "");
}
toFixed($a, 3); // 2.423
Ответ 3
Вы пробовали это:
round(2.4232, 2);
Это даст вам ответ 2.42.
Более подробную информацию можно найти здесь: http://php.net/manual/en/function.round.php
Ответ 4
Прямой эквивалент sprintf('%.03F', $a)
. Это будет отформатировать рассматриваемое значение как число с 3 десятичными цифрами. Он также будет округлен, если потребуется.
Ответ 5
Вот перевод:
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
Ответ 6
В PHP вы можете использовать функцию round.
Ответ 7
Прямое решение заключается в использовании в php number_format()
number_format(2.4232, 3);