It seems the PEP already addresses this for Kotlin (well, for statically typed languages) under the “Motivation” section:
The problem is unique to dynamically typed languages: in a statically typed language like C, the inputs, typically function arguments, would be declared as double or float, and when a call passes an integer argument, it is converted to double or float at the time of the call. Python doesn’t have argument type declarations, so integer arguments can easily find their way into an expression.
To echo a bit what others have said: This kind of behavior doesn’t appear to be a major problem in Kotlin (or Java, or other typed languages). You always know when you’re doing Integer math and you always know what type is returned from an expression. Besides being expected behavior, making a mistake often results in a compiler error–this mistake, in particular, is enforced by the type-system. Maybe there is a better way to do things but the motivation for Kotlin would be very different from Python’s.
EDIT: For Kotlin, separate operators for floating and Int division does not add any new information since we already know exactly what kind of division is happening and can’t compile if we try to use the wrong type. However, one might argue that expressions with mixed float/int parts (e.x. x / y / z
, x / y * z
) may return the correct type while still performing unintentional integer math. We still can check exactly what each step is returning and instantly know what is happening–but this could be made more visible.
One solution that requires no change and solves this visibility issue is to have an IDE mark, color, or highlight divisions or expression groups for Integer math mixing with floating point math. I think that feature request has far greater chance of succeeding–you could even make it as a third party plugin.