floats
O mejor aún, si el lenguaje lo soporta, usar un tipo de datos de punto fijo (a veces llamados "decimal"). Se hace cargo de algunos redondeos por ti sin tener que lidiar con los casos especiales que tiene trabajar con tipos de datos de números racionales (por ejemplo la pérdida de significación al multiplicar).
Si quieres una resolución de, digamos, 10¯⁹, lo mejor es usar longs, y que la unidad valga 10¯⁹.
Ojo con la consecuente reducción en el rango de representación de los enteros.