-4
votes

Comment convertir une chaîne en long sans perdre le zéro initial

Dans ma méthode de service Web, j'ai une entrée de type Long . Je devrais ajouter deux zéro à gauche, donc je l'ai converti en String et je concat les deux zéro, puis je devrais à nouveau convertir en Long, j'ai trouvé que le type Long en java ignore le zéro gauche. Comment puis-je garder zéro à gauche dans une valeur longue?

Long a=58451236;
String b= "00"+String.valueOf(a);
Long c = Long.parseLong(b); // ==> Excepected value : 0058451236, found c= 58451236


4 commentaires

Est-ce que cela répond à votre question? Parse String à long avec zéro non significatif


Utilisez long comme nombre. Pour ajouter des zéros non significatifs à la sortie, formatez la valeur: stackoverflow.com/questions/275711/...


Le comportement que vous décrivez est attendu et correct. Les zéros non significatifs n'ont généralement pas de sens sur les valeurs entières. Autrement dit, 001 = 000001 = 1 = 01. Ils ont tous la même valeur et sont réduits en interne à la représentation binaire. Si vous souhaitez produire une représentation sous forme de chaîne de ce nombre de sorte qu'il soit complété par des zéros jusqu'à un nombre spécifique de chiffres, vous pouvez utiliser divers outils de mise en forme de chaîne pour ce faire. La question devient donc: pourquoi est-ce important pour votre système qu'il n'y ait pas de zéros non significatifs?


Vous pouvez utiliser NumberFormat pour formater un nombre afin qu'il contienne toutes les quantités de chiffres souhaitées, ce qui inclut les zéros non significatifs.


3 Réponses :


4
votes

Vous ne le faites pas, un Long / long / Integer / int est un nombre, un nombre n'ayant des zéros non significatifs. Seule une représentation sous forme de chaîne d'un nombre peut avoir des zéros non significatifs.

Si vous avez absolument besoin des zéros non significatifs et que le nombre 0001 est différent de 001, alors vous n'avez pas affaire à des nombres mais uniquement à des chaînes qui ressemblent à des nombres et vous ne devriez pas le convertir en un long en premier lieu.


0 commentaires

0
votes

Vous ne pouvez pas car un Long n'a pas de zéro non significatif.

Vous pouvez le stocker avec une String comme celle-ci String.format("%02d", longValue);


1 commentaires

%02d garantirait au moins 2 chiffres décimaux, mais il semble que OP veut 10 chiffres, donc %010d pourrait être mieux.



0
votes

Un long ne peut pas avoir une valeur de lead égale à 0. Je ne connais pas votre cas d'utilisation, mais si vous voulez avoir 00 comme lead, ne le convertissez pas en long , utilisez plutôt String .


0 commentaires