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