Utilizzando i double in luogo dei float già il problema di approssimazione di risolve.

Con gli stessi dati di prima

Il codice con i float mi restituisce 465820384.00
Il codice con i double mi restituisce 465820392.59
mentre la calcolatrice 465820392,6

Prova a definire b come

codice:
double b = Double.parseDouble(a) * 32804253;