On 17 Jul 2014, at 08:19, Zeev Suraski <z...@zend.com> wrote:

> PHP's not Perl.  Let's keep it that way please…

> I don't think it makes sense to add a
> specialized integer division operator when we do have a different division
> operator, and I don't think other dynamic languages have such an operator
> - so unlike **, there's no established precedent…

True, but PHP clearly drew inspiration from Perl, and C, which also has integer 
division.

Many of these languages don’t have an integer division operator simply because 
they don’t need one. In most C-like languages and plenty of non C-like, an 
integer divided by an integer is always an integer, and you only get a float 
result if one or more operands are a float. However, in languages like PHP, 
Python, Visual Basic and Pascal, the division operator is unusually (though I’d 
say more intuitively) defined as sometimes giving a float for integer operands. 
In the case of PHP and Python, this is only when the the second operand isn’t a 
factor, while in the case of VB and Pascal, / always results in a float. It is 
in these languages that we find the much rarer integer division operator 
(Python has //, Visual Basic has \, Pascal has div) because you can’t do it the 
“normal” way. In this respect, it’s rather unusual that PHP lacks an integer 
division operator, or even some built-in way to do integer division at all, 
given that all its peers do support it.

There are also languages which don’t have integers, like JavaScript. In JS 
there’s no need for such an operator as, since it doesn’t have integers anyway, 
Math.floor(x / y) isn’t going to lose any accuracy.

Makes me wonder why we don’t have one after all these years. I assume either 
the division operator hasn’t always done what id does now (I’m not a historian, 
so I couldn’t tell you that), or that people have tended to just go for floor(x 
/ y). After all, that works perfectly on 32-bit platforms. ;)
--
Andrea Faulds
http://ajf.me/





--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to