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;