If I were to design a new programming language then x > y or x == y when x is the float 1.2 and y the integer 1 would throw an exception. Mathematically that is wrong because obviously 1.2 > 1, but in my experience, trying to compare values of different types leads to much pain and many annoying bugs.