0
votes

Conversion d'un nombre de bigdecimaux au format de ###. #

J'essaie de faire un numéro dans une variable de bigdecimal correspond au format de ###. # où peu importe quel numéro est passé, il sortira comme ###. #

Par exemple, si j'étais passé le numéro 1 dans une variable bigdecimale, la méthode reviendrait 001.0

Si j'étais passé 11.1 comme une variable de grande valeur, la méthode reviendrait 011.1

J'ai déjà un peu du code pour faire correspondre les lieux décimaux

bigdecimal x = nouveau bigdecimal (1); Décimalformat df = nouveau décimalformat ("# 0"); Chaîne formatée = df.format (x);

Donc, cela retournerait 1.0 Cependant, je ne peux pas comprendre comment faire apparaître les principaux zéros avant de convertir à BigDecimal.

Quelqu'un peut-il m'aider ou me diriger dans la bonne direction?

Merci tout le monde


6 commentaires

Pourriez-vous clarifier un peu plus? Les réponses postées fonctionnent comme prévu, par exigence. "Utiliser une variable au lieu d'un nombre", qu'est-ce que cela signifie?


Per mon exemple de code ci-dessus, j'ai une variable de bigdecimale x. J'ai besoin de formater x comme 000.0. Cependant, si j'utilise df.format (x), puis retournez sur X dans un bigdecimal, le formatage disparaît. Exemple: x = 1 Après avoir utilisé le format, il se transforme en 001.0, ce qui est nécessaire. Lors de la conversion à BigDecimal, il se transforme en 1.0, ce qui est incorrect.


BigDecimal n'est pas avoir le concept de mise en forme. C'est évidemment perdu après la conversion à BigDecimal. BigDecimal détient juste un numéro.


Je l'ai compris avec l'aide d'Andreas. Merci beaucoup. La solution que j'ai proposée était df.format (myvariable.getmyvariable ()). Tostring () . Je sais que cela ne peut pas faire une tonne de sens, mais malheureusement, tout ce que je peux partager en raison de la loi sur la vie privée de mon entreprise. Merci tout le monde!


Vous faites quelque chose de non-sens, vous appelez à une ficelle. Mais peu importe.


Oui, je suis bien conscient de ce que je vais et j'ai déjà changé mon code avant que j'étais même au courant de votre remarque condescendante. Avec tout le respect due, je n'ai pas besoin de votre condescendance. Je suis venu ici pour demander de l'aide parmi mes pairs sur un problème, je n'avais pas à avoir quelqu'un d'être complètement impoli et peu professionnel. Si vous voyez quelque chose que je fais mal, s'il vous plaît laissez-moi savoir pour que je puisse résoudre cela, mais vous n'êtes pas obligé d'être si condescendant. Merci à tous ceux qui ont aidé. J'ai appris de mes erreurs et de vos conseils. Fil fermé.


3 Réponses :


-1
votes

Vous pouvez utiliser les chaînes d'Apache.

StringUtils.leftPad(number.toString(), 3, '0');


2 commentaires

Je pense que vous voulez dire strongutils.leftpad (numéro.tostring (), 5, '0');


Ce n'est pas vraiment une solution appropriée.



1
votes

Utilisez une instance NumberFormat code>, avec un locale code> qui utilise le point em> comme séparateur décimal.

nf.setGroupingUsed(true);   // 123,456.0 - default value is true
nf.setGroupingUsed(false);  // 123456.0


0 commentaires

0
votes

Utilisez nouvelle décimalformat ("000.0")

exemples xxx


1 commentaires

Donc, le seul problème d'utilisation de cette méthode est que je vais utiliser une variable au lieu d'un nombre. Donc, par exemple BigDecimal X = nouveau BigDecimal (1); Donc, je ne peux pas faire de nouveau bigdecimal (x). Désolé pour la confusion. Je vais reformuler mon problème dans le post principal