[php] PHP에서 소수점 이하 자릿수 0을 제거

다음 zero decimals과 같이 숫자 값에서 제거하는 빠른 방법을 찾으려고합니다 .

echo cleanNumber('125.00');
// 125

echo cleanNumber('966.70');
// 966.7

echo cleanNumber(844.011);
// 844.011

이를 위해 최적화 된 방법이 있습니까?



답변

$num + 0 트릭을 수행합니다.

echo 125.00 + 0; // 125
echo '125.00' + 0; // 125
echo 966.70 + 0; // 966.7

내부적으로 이것은 플로팅 (float)$num이나 캐스팅과 동일 floatval($num)하지만 더 간단합니다.


답변

당신은 floatval기능을 사용할 수 있습니다

echo floatval('125.00');
// 125

echo floatval('966.70');
// 966.7

echo floatval('844.011');
// 844.011


답변

이것이 내가 사용하는 것입니다 :

function TrimTrailingZeroes($nbr) {
    return strpos($nbr,'.')!==false ? rtrim(rtrim($nbr,'0'),'.') : $nbr;
}

NB .소수점 구분 기호로 가정합니다 . 플로트 캐스트가 없기 때문에 임의로 큰 (또는 작은) 숫자로 작동한다는 이점이 있습니다. 또한 숫자를 과학적 표기법 (예 : 1.0E-17)으로 바꾸지 않습니다.


답변

단순히 +문자열 변수에 추가 하면 타입 캐스트가 (부동) 발생 하고 0이 제거됩니다.

var_dump(+'125.00');     // double(125)
var_dump(+'966.70');     // double(966.7)
var_dump(+'844.011');    // double(844.011)
var_dump(+'844.011asdf');// double(844.011)


답변

쉼표로 동일한 문제가있는이 사이트를 방문하는 모든 사람을 위해 다음을 변경하십시오.

$num = number_format($value, 1, ',', '');

에:

$num = str_replace(',0', '', number_format($value, 1, ',', '')); // e.g. 100,0 becomes 100

이 경우 두 개의 제로 제거 할, 그럼 같이 변경 :

$num = str_replace(',00', '', number_format($value, 2, ',', '')); // e.g. 100,00 becomes 100

자세한 내용은 여기 : PHP 번호 : 만 볼 수 필요한 경우 소수점


답변

페이지 또는 템플리트에 표시하기 직전에 0 자리를 제거하려는 경우.

sprintf () 함수를 사용할 수 있습니다

sprintf('%g','125.00');
//125

‌‌sprintf('%g','966.70');
//966.7

‌‌‌‌sprintf('%g',844.011);
//844.011


답변

당신은 당신을 위해 이것을 할 수있는 수레로 캐스팅해야합니다.

$string = "42.422005000000000000000000000000";
echo (float)$string;

이것의 결과는 당신이 찾고있는 것입니다.

42.422005