문제

사용하고 싶습니다 number_format PHP의 기능. 예를 들어:

$number = 234.51;
echo number_format($number,2);

이것은 플로트 번호에 대해 작동하지만 다른 숫자에 사용하고 싶습니다. 숫자가 10 진수이고 부동 소수점이없는 경우 : 145.00과 같은 것입니다. 이것을 어떻게 고칠 수 있습니까? 나는 필요할 때만 큼 많은 부동 소수점을 보여주고 싶다는 것을 의미합니다.

도움이 되었습니까?

해결책 2

나는 number_format에서 원하는 것을 얻을 수 없다고 생각합니다. 그래서 나는 이것을했고 잘 작동합니다.

 public function floatNumber($number)
 {
      $number_array = explode('.', $number);
      $left = $number_array[0];
      $right = $number_array[1];
      return number_format($number, strlen($right));
 }

답장을 위해 모든 고맙습니다.

다른 팁

조사 printf 그리고 sprintf 대신 기능 number_format.

그들은 당신이 원하는대로 숫자를 포맷 할 수있는 능력을 제공합니다.

printf("%d", $int) 

소수점 정수에 적합합니다.

printf("%4.2f", $float) 

소수점 이하 두 자리가있는 부동 소수점 번호에 적합합니다.

number_format 통화 출력의 국제화를위한 것 같습니다. 그러나 소수점 '전체'숫자를 언급했기 때문에 그것이 원하는 것이라고 생각하지 않습니다.

더 나은 방법을 알지 못하지만 아래 코드와 같이 유형을 비교할 수 있습니다.

$number = 234.159;
if(is_float($number)) {
 echo number_format($number, 2);
}else {
 echo $number;
}

조금 빠르고 더러워 지지만 단순히 ...

str_replace('.00', '', number_format($potentialFloat, 2));

이상적이지만 효과적입니다.

핵심 문제는 얼마나 필요한지를 정의하는 것입니다. 첫 번째 소수점이 0이기 때문에 13.01을 13으로 정의 하시겠습니까? printf와 숫자 형식은 당신에게 얼마나 많은 소수점을 알아야하기 때문에, 나는 그것이 당신에게 효과가 있다는 것을 모른다.

어쩌면 이와 같은 것 (많은 기능이지만 처음 0을 찾은 다음 잘린 문자열을 반환합니다). 예, 집중적이지만 가장 좋은 방법 일 수 있습니다.

function show_number($number, $max = 8){
  if(strpos($number, '.')){
    $decimal = strpos($number, '.');
    if(strpos($number, '.0')){
      return substr($number, 0, $decimal);//returns whole if zero is first
    } else {
      if(strpos(substr($number, $decimal, $max), '0')){
        $zero = strpos(substr($number, $decimal, $max), '0');
        return substr($number, 0, $decimal+$zero);//returns number w/0 first zero
      } else {
        return substr($number, 0, $decimal+$max+1); //returns number with max places
      }
    }
  } else {
    return $number; //returns number if no decimals
  }
}
rtrim(number_format($number, 2), '0.');

나는 다음을 사용하여 후행 0을 제거합니다.

// Trims a floating point number so there are no trailing zeros. For example:
// 1.00 -> 1
// 1.10 -> 1.1
function trimFloatingPoint($input) {
    $strNum = strval($input);

    while(substr($strNum, -1, 1) == '0')
        $strNum = substr($strNum, 0, strlen($strNum) -1);

    // Trailing zeros are gone. How about the trailing period?
    if(substr($strNum, -1, 1) == '.')
        $strNum = substr($strNum, 0, strlen($strNum) -1);

    return $strNum;
}
$x = $x - floor($x)

당신에게 올바른 떠 다니는 지점을 줄 것입니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top