Как убрать конечные нули в PHP - PullRequest
63 голосов
/ 01 марта 2011

Привет, может кто-нибудь дать мне объяснение (и, может быть, пример), как бы я мог убрать конечные нули из числа с помощью PHP.

Например:

"Lat":"37.422005000000000000000000000000","Lon":"-122.84095000000000000000000000000"

Будет преобразовано в:

"Lat":"37.422005","Lon":"-122.84095"

Я пытаюсь убрать нули, чтобы сделать их более читабельными. Я попытался использовать str_replace(), но это также заменило нули внутри числа (дох).

Спасибо = D

Ответы [ 14 ]

0 голосов
/ 05 февраля 2019

Если вы хотите решение, которое принимает минимальное и максимальное количество знаков после запятой, это должно работать:

/**
 * Displays up to 4 decimal places, with a minimum of 2 decimal places, trimming unnecessary zeroes
 *
 * @param mixed $number
 * @param int $minimumDecimals
 * @param int $maximumDecimals
 * @return string
 */
function rate_format($number, int $minimumDecimals = 2, int $maximumDecimals = 4): string
{
    $formatted = number_format($number, $maximumDecimals, '.', ',');
    $minimumLength = strpos($formatted, '.') + $minimumDecimals + 1;
    $extra = rtrim(substr($formatted, $minimumLength), "0");
    return substr($formatted, 0, $minimumLength) . $extra;
}


// rate_format("1.2500") returns "1.25"
// rate_format("1.2525") returns "1.2525"
// rate_format("1.25256") returns "1.2526"
// rate_format("1") returns "1.00"

Это жестко запрограммированный язык для использования в США, но его легко настроить для других языков.

0 голосов
/ 19 сентября 2012

хм, интересно.Я использовал это:

// remove leading zeros
$output = ltrim ($output, "0");

// remove trailing 0s.
$temp=explode(".",$output);
$temp[1]=rtrim($temp[1],"0");
$output = $temp[0];
if (!empty($temp[1])) $output.='.'.$temp[1];

return $output;

Это удаляет завершающие 0 с числа после первой десятичной точки.В противном случае число, подобное 100, становится равным 1.

Поскольку я проводил сравнение, использование метода float вызывало проблемы.Надеюсь, это поможет?

0 голосов
/ 01 марта 2011

Вы можете использовать rtrim () (http://www.php.net/manual/en/function.rtrim.php):

rtrim( "37.422005000000000000000000000000" , "0" )

Просто убедитесь, что будет десятичная точка.

0 голосов
/ 01 марта 2011

preg_replace сделает трюк:

$lat=preg_replace('/0+$/','',$lat);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...