PDA

Visualizza la versione completa : [J2 Me] Conversione da String a float...


CrashOverride
19-06-2004, 14:40
ciao,
stò facendo qualcosa con il j2me sdk, e mi sono scontrato con un problemino : i controlli TextField ecc.. mi sembra che ritornino solo una stringa, ma io devo convertirla il un float per fare dei calcoli.
Ho provato con
Float.parseFloat(...) ma non funziona perchè l'oggetto Float non è supportato.
Come posso fare ??

LeleFT
19-06-2004, 17:08
Non so se può funzionare sotto J2ME, però una soluzione potrebbe essere la seguente:


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:


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ì:


(3 * 10 ^ 0) + (2 * 10 ^ 1) + (1 * 10 ^ 2) + (3 * 10 ^ -1) + (4 * 10 ^ -2)


Ciao. :ciauz:

CrashOverride
21-06-2004, 09:37
ok, grazie,
sembra funzionare, ma adesso mi si presenta un'altro problema....
una volta effettuato il calcolo con i float, devo convertire tutto in String per metterlo in un TextField....sfortunatamente il metodo
String.valueOf() non è supportato.... qualche idea ??

LeleFT
21-06-2004, 15:43
Se J2ME è come Java non hai bisogno di nessun metodo: qualsiasi oggetto o tipo di dato primitivo, concatenato con un oggetto String viene automaticamente convertito in String:


miaTextField.setText("" + valoreFloat);



Ciao. :ciauz:

Loading