Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [J2 Me] Conversione da String a float...

    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
    codice:
    Float.parseFloat(...)
    ma non funziona perchè l'oggetto Float non è supportato.
    Come posso fare ??

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,307
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    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
    codice:
    String.valueOf()
    non è supportato.... qualche idea ??

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,307
    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:
    codice:
    miaTextField.setText("" + valoreFloat);

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.