除以整数并得到整数值

时间:2012-10-11 05:05:29

标签: php

在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中做到这一点?

9 个答案:

答案 0 :(得分:82)

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

round(8 / 3); // 3

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

floor(8 / 3); // 2

答案 1 :(得分:50)

在PHP 7中,有intdiv函数正在执行您想要的功能。

用法:

intdiv(8, 3);

返回2

答案 2 :(得分:20)

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 manual

答案 3 :(得分:7)

使用这个......

intval(1700000 / 300000 )...

返回整数值。

答案 4 :(得分:6)

(int)(1700000 / 300000);

使用类型转换。

答案 5 :(得分:3)

在PHP中有几种方法可以执行整数除法。该语言没有整数除法运算符,但有几个选项可将浮点商舍入为整数:

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

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

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

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

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

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

在PHP 7上,您可以使用intdiv($p, $q)直接执行整数除法。这相当于PHP 5上的(int)($p / $q)

答案 6 :(得分:2)

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

8/3 | 0

答案 7 :(得分:1)

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

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

答案 8 :(得分:1)

对于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";
         ?>