Java-Pourquoi est-ce que je reçois null quand j'essaie de 9999999999999 dans un BigDecimal?


Voici mon code:

String value = "9999999999999";
Character decimalFormat = '.';
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(decimalFormat);
symbols.setGroupingSeparator(decimalFormat.equals('.') ? ',' : '.');
DecimalFormat format = new DecimalFormat();
format.setDecimalFormatSymbols(symbols);
format.setParseBigDecimal(true);
ParsePosition parsePosition = new ParsePosition(0);
BigDecimal result = (BigDecimal) format.parse(value, parsePosition);

Lorsque je passe 9999999999999 ou 99999999999.999999999 en tant que" valeur " dans ce code, j'obtiens null. Pourquoi?

Author: goe, 2016-01-25

1 answers

1 Il fonctionne parfaitement, et même si vous mettez mauvaise nombre de lettres à l'intérieur, vous obtenez le début.

2 sauf si votre chaîne commence par une lettre: X999 vous donne null, ou est nul.

3A Donc je soupçonne qu'il y a un autre code qui modifie la valeur.

Ou

3B Vous n'utilisez pas de bibliothèques normales (importer java.texte...)

4 Dernière méthode: trace chaque appel.

Quelle analyse fait:

La méthode tente d'analyser le texte à partir de l'index donné par pos. Si l'analyse réussit, alors l'index de pos est mis à jour à l'index après le dernier caractère utilisé (l'analyse n'utilise pas nécessairement tous les caractères jusqu'à la fin de la chaîne), et le nombre analysé est renvoyé. Le point de vente mis à jour peut être utilisé pour indiquer le point de départ du prochain appel à cette méthode. Si une erreur se produit, alors l'index de pos n'est pas changé, l'index d'erreur de pos est placé à l'index de la caractère où l'erreur s'est produite, et null est retourné.

 2
Author: guillaume girod-vitouchkina, 2016-01-25 19:08:54