RE:como evito un desbordamiento
Has probado en declarar las variables como Double?? con el double tienes más dígitos que con un int o integer. A parte, si el valor es muy grande de lo pone en función de un exponente, 5 e10.
Si no funciona con esto, la única manera que se me ocurre, aunque es un poco dura, és crear tu propia operacion. Yo esto lo hice en una práctica en mi época de estudiante pero en C. Creas una tabla con tantas posiciones como dígitos quieras que tenga y implementas un mètodo para cada operacion. Los dos números que quieras operar tendran la forma de la tabla y operas dígito a dígito. Supongo que esta solución no te acabará de gustar ya que lleva su tiempo pero yo te doy la idea, nunca se sabe.
Espero que te sirva!!
Saludos!!!