在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中做到这一点?
答案 0 :(得分:82)
答案 1 :(得分:50)
答案 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)
答案 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";
?>