Domanda

Ho il numero 654987. È un ID in un database. Voglio convertirlo in una stringa. Il normale Double.ToString (valore) lo rende in forma scientifica, 6.54987E5. Qualcosa che non voglio.

Altre funzioni di formattazione che ho trovato controlla la locale corrente e aggiunge migliaia di separatori appropriati e simili. Dal momento che è un ID, non posso accettare alcuna formattazione.

Come si fa?

[Modifica] Per chiarire: sto lavorando su un database speciale che tratta tutte le colonne numeriche come doppie. Il doppio è l'unico tipo (numerico) che posso recuperare dal database.

È stato utile?

Soluzione

Usa lungo:

long id = 654987;
String str = Long.toString(id);

Altri suggerimenti

Utilizza un NumberFormat (in particolare a DecimalFormat ):

double value = getValue();
String str = new DecimalFormat("#").format(value);

in alternativa è sufficiente eseguire il cast su int (o long se l'intervallo di valori è troppo grande):

String str = String.valueOf((long) value);

Ma poi di nuovo: perché hai un valore intero (cioè un "numero intero") in una variabile double in primo luogo?

Se si tratta di un ID intero nel database, utilizzare invece un numero intero. Quindi verrà formattato come intero.

Che ne dici di String.valueOf((long)value);

Che dire di:

Long.toString(value)

o

new String(value)

Inoltre puoi usare

double value = getValue();

NumberFormat f = NumberFormat.getInstance();
f.setGroupingUsed(false);

String strVal = f.format(value);

Se ciò che stai memorizzando è un ID (ovvero qualcosa usato solo per identificare un'altra entità, il cui valore numerico effettivo non ha alcun significato), non dovresti usare Double per memorizzarlo. La precisione quasi sicuramente ti fregerà.

Se il database non consente valori interi, è necessario archiviare gli ID come stringhe. Se necessario, impostare la stringa come rappresentazione dell'intero che si desidera utilizzare. Con l'uso appropriato degli zeri iniziali è possibile rendere l'ordine alfabetico della stringa uguale all'ordine numerico degli ints.

Questo dovrebbe risolvere il problema.

Che dire di Long.toString ((long) value)?

    double d = 56789;
    String s = d+"";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top