Currently, to ensure that an expression is evaluated as a float and returns a float one option would be:
code:
$floatResult=Cdbl($VariableA) opr $VariableB

You've coerced the first variable to a float so the rest of the expression will be a float.

If you change the rules so that the variables values are coerced to the higher type script writers will have to do things like
code:
$stringResult=$stringVariable + Cstr($Variable)

It's no better or worse really - you've just moved the requirement to cast/coerce the data type to a different situation.

Of course all this applies only where mixed types are in use. Where the variables in an expression have been declared or defined as the same type the problem never arises. If your float variables are initiated as 0.0, and your integers as 0 you won't have a problem in expressions unless you mix them. If you do mix them it is not unreasonable that you should cast them to the correct type for the expression.

The 'C' language does automatically convert operands to the higher of the types, but it it a strongly "typed" language where variable and function declarations have to include a type - and it doesn't have to deal with strings or unknown variable types.