[php] 숫자의 정수 및 소수 부분을 얻는 방법?

1.25라고 가정하면이 숫자의 “1”과. “25”부분을 어떻게 얻습니까?

소수점이 .0, .25, .5 또는 .75인지 확인해야합니다.



답변

$n = 1.25;
$whole = floor($n);      // 1
$fraction = $n - $whole; // .25

그런 다음 1/4, 1/2, 3/4 등과 비교하십시오.


음수의 경우 다음을 사용하십시오.

function NumberBreakdown($number, $returnUnsigned = false)
{
  $negative = 1;
  if ($number < 0)
  {
    $negative = -1;
    $number *= -1;
  }

  if ($returnUnsigned){
    return array(
      floor($number),
      ($number - floor($number))
    );
  }

  return array(
    floor($number) * $negative,
    ($number - floor($number)) * $negative
  );
}

$returnUnsigned하기에서 정지 -1.25를 위해서는 -1-0.25


답변

이 코드는이를 분할합니다.

list($whole, $decimal) = explode('.', $your_number);

여기서 $ whole은 정수이고 $ decimal은 소수점 뒤에 자리를 갖습니다.


답변

그냥 다르게 🙂

list($whole, $decimal) = sscanf(1.5, '%d.%d');

CodePad .

추가 이점으로 양쪽이 숫자로 구성된 경우에만 분할됩니다.


답변

floor () 메서드는 음수에 대해 작동하지 않습니다. 이것은 매번 작동합니다.

$num = 5.7;
$whole = (int) $num;  // 5
$frac  = $num - $whole;  // .7

… 음수에도 작동합니다 (동일한 코드, 다른 숫자) :

$num = -5.7;
$whole = (int) $num;  // -5
$frac  = $num - $whole;  // -.7


답변

짧은 방법 (floor 및 fmod 사용)

$var = "1.25";
$whole = floor($var);     // 1
$decimal = fmod($var, 1); //0.25

그런 다음 $ decimal을 0, .25, .5 또는 .75와 비교하십시오.


답변

int로 캐스팅하고 빼기

$integer = (int)$your_number;
$decimal = $your_number - $integer;

또는 비교를 위해 소수를 얻으려면

$decimal = $your_number - (int)$your_number


답변

사용할 수있는 fmod 함수도 있습니다. fmod ($ my_var, 1)는 동일한 결과를 반환하지만 때로는 작은 라운드 오류가 발생합니다.