la división de 2 enteros da por resultado un entero, si quieres que esto no sea así tienes que usar casting de variables
ret = (double)a/b;
esto tornará "a" tipo double antes de calcularlo, por lo tanto el resultado es el tipo de varibale de mayor precisión
sobre la división entre 0 tienes 2 caminos,
el simple
if(b==0) imprimir ("no puedes dividir entre cero")
el complicado, manejo de excepciones
try - catch