Non so se può funzionare sotto J2ME, però una soluzione potrebbe essere la seguente:
codice:
private float parsa(String numero) {
float cambio = 0;
int posVirgola = numero.indexOf(".");
int i = posVirgola - 1;
cambio = (float) numero.charAt(i) - 48;
i--;
int k = 1;
while (i>=0) {
cambio += ((float) numero.charAt(i) - 48) * esponente(10, k);
i--;
k++;
}
i = posVirgola + 1;
k = 1;
while (i<numero.length()) {
cambio += ((float) numero.charAt(i) - 48) / esponente(10, k);
System.out.println(((float) numero.charAt(i) - 48) / esponente(10, k));
i++; k++;
}
return cambio;
}
private int esponente(int base, int exp) { return (exp == 0) ? 1 : base * esponente(base, exp-1); }
Questo lo puoi usare in questo modo:
codice:
float valore = parsa(numeroStringa);
Spiego come funziona: calcola la posizione all'interno della stringa del punto decimale. Poi scandisce tutta la stringa dal carattere precedente il punto fino all'inizio, calcolando il valore della parte intera (somma di potenze crescenti di 10). A questo valore, poi, aggiunge, man mano, il valore della parte decimale: somma di potenze decrescenti di 10.
Il numero 123.34, infatti si può scomporre così:
codice:
(3 * 10 ^ 0) + (2 * 10 ^ 1) + (1 * 10 ^ 2) + (3 * 10 ^ -1) + (4 * 10 ^ -2)
Ciao.