Yo no usaría un MDOTable... es volver a Paradox, lo suyo es usar un MDODataset.
Si no quieres tener problemas con decimales, te aconsejo usar numeric(10,2) (10 como mínimo) en todos tus campos y usar un Dialecto 3 (esto es primordial).
El hecho, es que dependiendo de la precisión (el primer número entre paréntesis), Firebird guardará el valor con un tipo de datos determinado. Si en algún momento se guarda como Float, podrás obtener números decimales incorrectos, es decir, el valor que querías guardar no se corresponde con el guardado.
Para una comprensión mejor, mira el archivo DataDef.pdf pág 60-65 (Data Definition) de los manuales de Interbase 6 disponible en
www.ibphoenix.com apartado de Documentation.
Saludos