[php] 정수를 나누고 정수 값 얻기

C 또는 Python과 같은 언어에서 정수를 정수로 나누면 정수를 얻습니다.

>>> 8/3
2

그러나 PHP에서 정수를 다른 정수로 나누면 /때때로 부동 소수점을 얻습니다.

php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)

8/3이 2가되도록 Python이나 C와 같이 나누고 싶습니다. PHP에서 어떻게 할 수 있습니까?



답변

round()정수 반올림 값을 얻으려면 함수를 사용하십시오 .

round(8 / 3); // 3

또는

floor()함수를 사용 하여 정수 값 얻기

floor(8 / 3); // 2


답변

PHP 7에는 원하는 것을 정확히 수행하는 intdiv 함수가 있습니다.

용법:

intdiv(8, 3);

를 반환 2합니다.


답변

PHP에는 정수 나누기 연산자가 없습니다. 1/2은 float 0.5를 산출합니다. 값을 정수로 캐스트하여 아래쪽으로 반올림하거나 round () 함수를 사용하여 반올림을 더 세밀하게 제어 할 수 있습니다.


var_dump(25/7);           // float(3.5714285714286)    
var_dump((int) (25/7));   // int(3)   
var_dump(round(25/7));    // float(4)     

PhP 매뉴얼


답변

이것을 사용하십시오 ….

intval(1700000 / 300000 )...

이것은 정수 값을 반환합니다.


답변

(int)(1700000 / 300000);

유형 캐스팅을 사용하십시오.


답변

PHP에서 정수 나누기를 수행하는 방법에는 여러 가지가 있습니다. 언어에는 정수 나눗셈을위한 연산자가 없지만 부동 소수점 몫을 정수로 반올림하는 몇 가지 옵션이 있습니다.

<?php
$pos = 1;
$neg = -1;
$divisor = 2;

// No rounding (float division)
var_dump($pos / $divisor);          //  0.5 (float)
var_dump($neg / $divisor);          // -0.5 (float)

// Round toward zero (like C integer division)
var_dump((int)($pos / $divisor));   //  0 (int)
var_dump((int)($neg / $divisor));   //  0 (int)

// Round half away from zero
var_dump(round($pos / $divisor));   //  1 (float)
var_dump(round($neg / $divisor));   // -1 (float)

// Round down
var_dump(floor($pos / $divisor));   //  0 (float)
var_dump(floor($neg / $divisor));   // -1 (float)

# And on PHP 7 you can round toward zero with intdiv():
var_dump(intdiv($pos, $divisor));   //  0 (int)
var_dump(intdiv($neg, $divisor));   //  0 (int)  Rounded toward zero

PHP 7에서는 intdiv($p, $q)정수 나누기를 직접 수행 하는 데 사용할 수 있습니다 . 이것은 (int)($p / $q)PHP 5 와 동일합니다 .


답변

끝에 | 0을 추가하여 축약 형을 사용할 수 있습니다.

8/3 | 0