Per risolvere il problema devi usare Double al posto di Float
Il "perchè" è noto ormai da quarant'anni, è come viene gestito il tipo float all'interno del microprocessore, e cioè con una parte che si chiama mantissa e una parte che si chiama esponente, prova a cerca su internet, trovi di sicuro un sacco di info.
Il tipo Double ha comunque lo stesso problema, ma si nota molto molto meno perchè ha una precisione più elevata del tipo Float, per cui dovresti risolvere il tuo problema.
In VB.NET è stato introdotto il tipo Decimal che utilizza altri sistemi e quindi è proprio adatto a calcoli finanziari dove la precisione non deve essere assolutamente persa, ma in B4X non esiste un tipo di dato primitivo, per cui la soluzione su B4X è di utilizzare eventualmente la libreria BigDecimal, assolutamente più precisa ma più lenta.
Prova con Double e poi facci sapere
Mi ha incuriosito quel "aggiungere/togliere cifre o virgola", non sono cose che riesci a fare comunque con un tipo numerico senza passare per il tipo stringa ??
Sergio