94

在像 C 或 Python 这样的语言中,如果我将一个整数除以一个整数,我会得到一个整数:

>>> 8/3
2

但是在 PHP 中,如果我用 将一个整数除以另一个整数/,有时我会得到一个浮点数:

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

我想像在 Python 或 C 中那样做除法,所以 8/3 是 2。我怎样才能在 PHP 中做到这一点?

4

9 回答 9

105

使用round()函数获取整数舍入值。

round(8 / 3); // 3

或者

使用floor()函数获取整数值

floor(8 / 3); // 2
于 2012-10-11T05:07:58.000 回答
79

在 PHP 7 中,有一个intdiv函数可以做你想做的事。

用法:

intdiv(8, 3);

退货2

于 2016-02-03T15:43:41.407 回答
26

PHP 中没有整数除法运算符。1/2 产生浮点数 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手册

于 2012-10-11T05:08:49.407 回答
9

用这个....

intval(1700000 / 300000 )...

这将返回整数值。

于 2012-10-11T05:09:05.837 回答
7

对于 PHP 7 尝试intdiv()功能:

句法: int intdiv($dividend, $divisor)

          <?php           
           $dividend = 19; 
           $divisor = 3;  
           echo intdiv($dividend, $divisor); 
           ?>

对于旧版本的 PHP:

         <?php
     // Convert $total_minutes to hours and minutes.

         $total_minutes = 640;
         $minutes = $total_minutes % 60;
         $hours = ($total_minutes - $minutes) / 60;

         echo "Time taken was $hours hours $minutes minutes";
         ?>
于 2018-12-13T09:26:10.847 回答
6

有几种方法可以在 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。

于 2016-11-17T17:46:05.663 回答
5
(int)(1700000 / 300000);

使用类型转换。

于 2012-10-11T05:14:23.163 回答
4

您可以通过在末尾添加 |0 来使用简写形式

8/3|0

于 2016-02-29T22:44:47.027 回答
1

对于 PHP 版本 7 =>intdiv(a,b)

对于小于 7 的版本(如 5.6)=>(int)floor(abs(a/b))

于 2018-08-28T07:27:56.633 回答