Hola BramSt:
La respuesta es simple, no es lo mismo 2 a 2.0
¿Suena extraño? no lo es tanto, ya que matemáticamente "valen" lo mismo en realidad estamos hablando de dos cosas distintas ya que uno es un ENTERO y el otro es un FLOTANTE.
existen algunas reglas cuando haces operaciones matemáticas entre números, por ejemplo
Código:
ENTERO * ENTERO = ENTERO
ENTERO * FLOTANTE = FLOTANTE
ENTERO / ENTERO = FLOTANTE
Los dos primeros casos son los que se están presentando, en tu primer caso estás multiplicando dos números enteros, por lo tanto mySQL asigna el tipo resultado como un ENTERO, al sobrepasar el límite permitido entonces marca el error.
En el segundo caso, al multiplicar por un numero FLOTANTE, entonces mysql le asigna el resultado un tipo flotante, por lo tanto el resultado es un flotante, (observa que al final le pone un .0)
En el caso de la división, no importa el tipo de dato que utilices, el resultado siempre será un tipo flotante,
¿Se entiende?
Saludos
Leo.