web-dev-qa-db-fra.com

Java Conversion double en chaîne sans formatage

J'ai le numéro 654987. C'est un ID dans une base de données. Je veux le convertir en chaîne. La Double.ToString régulière (valeur) en fait une forme scientifique, 6.54987E5. Quelque chose que je ne veux pas.

Autres fonctions de formatage Ive found vérifie les paramètres régionaux actuels et ajoute les milliers de séparateurs appropriés et autres. Depuis son ID, je ne peux pas accepter de formatage du tout.

Comment faire?

[Modifier] Pour clarifier: je travaille sur une base de données spéciale qui traite toutes les colonnes numériques comme des doubles. Double est le seul type (numérique) que je peux récupérer dans la base de données.

29
Mizipzor

Utilisez Long:

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

Utilisez un NumberFormat fixe (en particulier un DecimalFormat ):

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

alternativement simplement transtypé en int (ou long si la plage de valeurs est trop grande):

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

Mais là encore: pourquoi avez-vous une valeur entière (c'est-à-dire un nombre "entier") dans une variable double en premier lieu?

32
Joachim Sauer

S'il s'agit d'un identifiant entier dans la base de données, utilisez plutôt un entier. Ensuite, il formatera sous forme d'entier.

6
Ned Batchelder

Que diriez-vous de String.valueOf((long)value);

6
rsp

Vous pouvez également utiliser

double value = getValue();

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

String strVal = f.format(value);
2
Bobs

Qu'en est-il de:

Long.toString(value)

ou

new String(value)
2
Eemeli Kantola

Si ce que vous stockez est un ID (c'est-à-dire quelque chose utilisé uniquement pour identifier une autre entité, dont la valeur numérique réelle n'a aucune signification), vous ne devriez pas utiliser Double pour le stocker. La précision vous gâchera certainement.

Si votre base de données n'autorise pas les valeurs entières, vous devez stocker les ID sous forme de chaînes. Si nécessaire, faites de la chaîne la représentation sous forme de chaîne de l'entier que vous souhaitez utiliser. Avec une utilisation appropriée des zéros non significatifs, vous pouvez rendre l'ordre alphabétique de la chaîne identique à l'ordre numérique des entrées.

Cela devrait vous permettre de contourner le problème.

1
DJClayworth

Qu'en est-il de Long.toString (valeur (longue))?

0
Yotam Abramson