(java) Formato tipo float

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

(java) Formato tipo float

Messaggio da danilo84 »

Ciao a tutti,
vorrei sapere se in java, c'è la possibilità di avere un numero di tipo float nel seguente formato: xxx.xxx.xxx,xx
Cioè, avere una funzione che in input abbia il numero cosi: 1234,23 e in output, sempre di tipo float questo: 1.234,23
Grazie
Avatar utente
Giambo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1013
Iscrizione: sabato 4 febbraio 2006, 18:36
Località: Helvetia

Re: (java) Formato tipo float

Messaggio da Giambo »

danilo84 ha scritto: Ciao a tutti,
vorrei sapere se in java, c'è la possibilità di avere un numero di tipo float nel seguente formato: xxx.xxx.xxx,xx
Cioè, avere una funzione che in input abbia il numero cosi: 1234,23 e in output, sempre di tipo float questo: 1.234,23
Si, quello che cerchi e' DecimalFormat, da usare con DecimalFormatSymbols:
http://java.sun.com/j2se/1.5.0/docs/api ... ormat.html
http://java.sun.com/j2se/1.5.0/docs/api ... mbols.html

Codice: Seleziona tutto

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(',');
symbols.setGroupingSeparator('.');
DecimalFormat format = new DecimalFormat("#,###.##", symbols);
String result = format.format(mioNumero);
E' curioso come nel pattern passato a DecimalFormat, il separatore delle migliaia e' uguale al separatore dei decimali che vuoi usare te, e vice versa ;)
Here we are again, now place your bets
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: (java) Formato tipo float

Messaggio da danilo84 »

Ciao, il programma va bene, solo che l'oggetto che hoin output è di tipo String, mentre lo voglio di tipo Float perchè mi serve per ordinare i campi di una tabella.
Avatar utente
simo_magic
Rampante Reduce
Rampante Reduce
Messaggi: 9496
Iscrizione: lunedì 18 dicembre 2006, 21:37
Località: Piemonte

Re: (java) Formato tipo float

Messaggio da simo_magic »

beh è di tipo string perchè ha la virgola e il punto in mezzo
quando vai ad ordinare confronta invece della stringa dentro al vettore il risultato della funzione

Codice: Seleziona tutto

Float.parseFloat(stringa)
che ritorna un float da una stringa prima però devi aver levato le virgole delle migliaia...
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: (java) Formato tipo float

Messaggio da danilo84 »

Ho fatto, solo che mi da errore:

Codice: Seleziona tutto

Exception in thread "main" java.lang.NumberFormatException: multiple points
	at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
	at java.lang.Float.parseFloat(Unknown Source)
	at tren.Home.<init>(Home.java:59)
	at tren.Home.main(Home.java:48)
Avatar utente
Giambo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1013
Iscrizione: sabato 4 febbraio 2006, 18:36
Località: Helvetia

Re: (java) Formato tipo float

Messaggio da Giambo »

danilo84 ha scritto: Ciao, il programma va bene, solo che l'oggetto che hoin output è di tipo String, mentre lo voglio di tipo Float perchè mi serve per ordinare i campi di una tabella.
Sbagli candeggio: Tu ordina i float, nella tabella usa una tua implementazione di TableCellRenderer per visualizzare i valori formattati come vuoi.

Codice: Seleziona tutto

  JTable table = new JTable();
  int indiceColonnaConIFloat = ...
  TableColumn col = table.getColumnModel().getColumn(indiceColonnaConIFloat );
  col.setCellRenderer(new MyTableCellRenderer());
    
  ...

  public class MyTableCellRenderer extends JLabel implements TableCellRenderer {
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
      // 'value' e' il tuo Float.
      [trasforma value nella forma voluta, la String 'result']
      // assegna il Float trasformato alla JLabel
      setText(result);
      return this;
    }
  }
}

Here we are again, now place your bets
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti