Io ho adottato la soluzione della virgola fissa. In pratica decido la precisione della parte decimale, supponiamo di 3 cifre, quindi moltiplico tutto per 1000.
In pratica 1 diventa mille, 2.3 diventa 2300 e 4.187 diventa 4187.
Per le somme e le sottrazioni non cambia nulla.
per le moltiplicazioni è necessario dividere per 1000 il risultato.
Per le divisioni è necessario moltiplicare per 1000 prima di dividere (per non perdere di precisione): 4.12/0.45 diventa (4120*1000)/450
Un'altra soluzione è quella di emulare la virgola mobile, creando un oggetto "Float" composto da un intero ed un esponente. L'intero rappresenterà sempre il valore del numero, l'esponente la posizione della virgola, così 132.4519 diventa 0.1324519 * 10^3 (memorizzo 1324519 e 3) mentre 0.0045 diventa 0.45 * 10^-2 (memorizzo 45 e -2). Poi per risolvere le operazioni però vengono fuori i primi problemi, ma è il metodo più preciso dato che è quello adottato dai coprocessori matematici...