A me non è chiarissimo quale sia, esattamente, il risultato che vuoi ottenere.
Se lo espliciti ti dico la soluzione ottima.
---
Riguardo ai tuoi "turbamenti", la versione breve è:
- per ragioni di velocità (cuttone) i numeri floating point vengono spesso (ma non sempre) impacchettati in una rappresentazione adatta per occupare 4 byte (singola precisione) oppure 8 (doppia)
- storicamente esistevano dei coprocessori matematici in grado proprio di elaborare questi formati "impacchettati" in modo efficiente (o meglio, più efficiente rispetto alla CPU). Si tratta della serie x87. Ogni CPU Intel aveva il suo relativo coprocessore matematico (8086->8087, 80286->80287). In realtà esistevano anche coprocessori matematici non-Intel, ma è un'altra storia. A un certo punto il coprocessore matematico è stato "inglobato" dentro la CPU, e tutte le CPU odierne (Intel) sono dotate di questo silicio, che una volta era fisicamente separato (si comprava e pagava a parte)
- i linguaggi "rozzi", tipo quello che stai usando, mappano in maniera pressochè diretta i tipi fondamentali con le strutture "rozze" della CPU.Ecco perchè i float C, non sorprendentemente, non sono altro che 4 byte "impacchettati"
- questo metodo (l'impacchettamento) non può rappresentare numeri reali (questo è banale, R è denso), e neppure i razionali a dir la verità, perchè hanno una "granularità" (mi verrebbe da dire una sorta di h di Planck in versione informatica
- la questione è ancora più complessa di così, ma compendiando avrai dei "buchi" nella rappresentazione dei float, questo può (in generale accade) introdurre degli errori di arrotondamento
- i quali errori si possono sommare "amplificandosi" fino a diventare sensibili. Cuttone su come si minimizza questo problema, la stabilità numerica degli algoritmi eccetera. Tutta roba penso del primo massimo secondo anno
- il problema esiste comunque anche usando "float grossi" (cioè da 16 byte, poco diffusi). c'è sempre e comunque.
QUINDI?
Quindi quando operi puoi adottare alcuni accorgimenti
1) te li tieni, sapendo il perchè e il percome
2) adotti ovunque possibile gli interi, "trasformati" alla bisogna in float
3) usi librerie a precisione multipla (ce ne sono parecchie)