2012-11-06 9 views
7

Ho pochi valori di stringa che sto recupero dal mio database per esempioCome convertire da stringa con formattazione frazionaria a Decimale o Float in Java?

"1/4","2/3" 

Ma durante la visualizzazione di contenuti ListView Android ho bisogno di visualizzarla come 0.25, 0.66.

Ora non voglio dividere la stringa e quindi dividere le singole stringhe in numeri e quindi dividerle in modo da avere un risultato.

Qualcuno sa, alcune funzioni dirette come Double.valueOf o parseDouble tipo?

+0

Il tuo requisito per trovare una soluzione sembra irragionevole, sembra l'approccio migliore per farlo in quel modo. –

+0

Sì, gabriel, anche io stavo pensando perché qualcuno dovrebbe salvare i valori come 1/4 e 2/3 nel database, ma per quanto riguarda la preoccupazione del cliente, sì, essi hanno tali valori, così necessari per aggirare il problema. –

+0

Il mio commento non riguardava il modo in cui i dati sono stati salvati (avendo visto qualche cosa strana io stesso), ma alla tua limitazione all'uso di uno split ("/") per risolvere il problema. –

risposta

-1

provare a utilizzare

SpannableStringBuilder test = new SpannableStringBuilder(); 
test.append("\n"); 
test.append(Html.fromHtml("<sup>5</sup>/<sub>9</sub>")); 
test.append("\n"); 
+0

hai sbagliato l'OP temo –

1

è possibile dividere la frazione utilizzando split("/"). Quindi è possibile convertire i valori in Double ed eseguire la divisione. Non ho idea di Android, è così che lo farei in Java.

+1

Quotare OP: _ "Ora non voglio dividere la stringa e quindi passare le singole stringhe ai numeri e poi dividerle per avere un risultato." _ – Less

+0

Ok, scusa. Ma non conosco nessun altro modo più semplice ... – jmrodrigg

8

Perché si "non si desidera dividere la stringa e quindi nasconderle su singole stringhe in numeri e quindi dividerle in modo da avere il risultato"?

io non sono a conoscenza di alcuna funzione incorporata per farlo in modo che la soluzione più semplice:

double parse(String ratio) { 
    if (ratio.contains("/")) { 
     String[] rat = ratio.split("/"); 
     return Double.parseDouble(rat[0])/Double.parseDouble(rat[1]); 
    } else { 
     return Double.parseDouble(ratio); 
    } 
} 

Inoltre riguarda il caso in cui si dispone intero rappresentante rapporto

parse("1/2") => 0.5 
parse("3/7") => 0.42857142857142855 
parse("1") => 1.0 
1

in Java , non abbiamo nulla di simile all'eval da JavaScript, quindi potresti usare this.

0

Non penso che ci sia qualcosa del genere. Ma non vedo perché non dovrebbe creare la propria funzione come questa:

public static double fromStringFraction(String fraction){ 
    String[] fractionArray = fraction.split("/"); 
    try { 
     if (fractionArray.length != 2){ 
      if (fractionArray.length == 1){ 
       return Double.parseDouble(fractionArray[0]); 
      } 
      else { 
       return 0d; 
      } 
     } 
     double b = Double.parseDouble(fractionArray[1]); 
     if (b==0d){ 
      return 0d; 
     } 
     Double a = Double.parseDouble(fractionArray[0]); 
     return a/b; 
    } 
    catch (NumberFormatException e){ 
     return 0d; 
    } 
} 
+0

Hey gabga, ho scritto alredy, che so dividendolo posso ottenere il risultato, ma non volevo fare un simile lavoro. Comunque grazie. –

3

immagino che avete risolto questo problema negli ultimi 2 anni; tuttavia, è possibile utilizzare Apache commons fraction class.

E 'dotato di un parser, quindi se si dovesse chiamare:

Fraction fraction = Fraction.getFraction("1/2"); 
double d = fraction.doubleValue(); 

Poi d dovrebbe contenere .5.

Problemi correlati