Since I work in code generation, these sorts of behaviors are a regular nuisance to me, but maybe I can imagine why. In MATLAB, most users do almost everything with doubles. When programming in MATLAB language, the average user doesn't even think about numeric types. I wasn't around then, but I think integers were originally added to the language primarily because it was burdensome to represent things like images as large arrays of doubles. Having added integers to the language to save on storage, you wouldn't want something simple like multiplying a large int8 array by 2 (that's double precision 2.0 in MATLAB) to generate a large double precision array out of a large integer array. I guess they preferred the current behavior to requiring, in that case, multiplication by int8(2). This rationale is, of course, less compelling when we're talking about scalars, but having inconsistent rules for scalars would be madness.