PHP 7 intdiv()vx floor或自定义类型转换

时间:2017-08-19 07:13:23

标签: php php-7.1

我正在寻找PHP 7新增加的内容以提高我的技能,我想知道#CODE BLOCK 1 from pcinput import getInteger num1 = getInteger( "Number 1: " ) num2 = getInteger( "Number 2: " ) num3 = getInteger( "Number 3: " ) num4 = getInteger( "Number 4: " ) num5 = getInteger( "Number 5: " ) print( "Total is",num1 + num2 + num3 + num4 + num5) #CODE BLOCK 2 from pcinput import getInteger total = 0 count = 0 while count < 5: total += getInteger( "Please give a number: " ) count += 1 print( "Total is", total) intdiv()或自定义floor()之间的区别究竟是什么

例如

type cast

在新版本的PHP中添加此函数的原因究竟是什么。

2 个答案:

答案 0 :(得分:0)

(int)将值转换为int,而floor()float保留为float。您在示例中使用了正数,但差异是负数。 intdiv旨在在int s分割后保留int

echo (int) (-8/3); // -2
echo floor(-8/3); // -3
echo intdiv(-8,3); //-2

答案 1 :(得分:-1)

一般来说,你提到的所有这三个作品都与你的例子类似,但intdiv()会在处理非常大的数字时给你更准确的结果

这是您可以看到的示例。

echo PHP_INT_MAX; // 9223372036854775807

echo (int)(PHP_INT_MAX/2); // 4611686018427387904
// here you can look the ending number

echo floor(PHP_INT_MAX/2); // 4.6116860184274E+18
// here you can see floor will return scientific notation for larger numbers

echo intdiv(PHP_INT_MAX,2); // 4611686018427387903
// you can compare the result return by (int) cast

intdiv() 总是给你正数或换句话说 intdiv() 让你知道你可以均分的次数

另一个示例开发人员总是使用Modulus运算符来获取余数,但intdiv()将始终返回正数,并让您知道可以均匀分配的次数。

echo (5 % 2) // 1
echo intdiv(5, 2) // 2

希望这足以理解所有3个人之间的差异。