2010-11-26 6 views
0

Je suis confronté à un problème en grand nombre décimal. L'extrait de code suivant expliquera mon problème:Big problème d'analyse décimale

BigDecimal parsedValue = (BigDecimal) decimalFormat.parse(input); 

Ici l'entrée est un type de chaîne. Supposons maintenant que la valeur de l'entrée est 135abc24 dans ce cas la valeur de parsedValue est mais je veux vérifier ces entrées et donner une erreur au lieu de tronquer la chaîne et le reste de la pièce. Je veux juste ajouter une chaîne d'entrée peut également contenir des exponentielles, donc je ne peux même pas vérifier uniquement les chaînes numériques. S'il vous plaît laissez-moi savoir si vous voulez plus d'informations ou ou la question n'est pas claire,

Merci d'avance.

Répondre

6

Vous pouvez utiliser BigDecimal String constructor pour créer BigDecimal (voir le lien pour plus de détails) et appliquer les transformations que vous souhaitez à votre chaîne d'entrée au préalable. Le constructeur lance un NumberFormatException si l'entrée n'est pas une représentation valide.

+0

Salut Jens, Merci pour votre réponse. Vous avez les résultats souhaités. Je voulais voter, mais je n'ai pas 15 de réputation :(De toute façon, merci beaucoup – Harmit

+0

De rien, bon d'entendre que ça a aidé :) –

2

Selon le documentation, DecimalFormat.parse() prend en charge un deuxième argument sous la forme d'une référence ParsePosition, qui est mise à jour avec la position à laquelle l'analyse s'est arrêtée. Vous pouvez ensuite comparer cela au début de votre chaîne et déterminer si la chaîne entière a été acceptée ou non.

+0

Salut Détendez-vous, merci de votre réponse. Je n'ai pas essayé cette option car j'ai obtenu le résultat souhaité avec la réponse de Jens. Mais je vais essayer et je vais certainement mettre à jour ici. Merci! – Harmit

+0

Ouais c'est une autre option pour résoudre le problème. Était en train de passer par les anciennes questions n trouvé mon commentaire. mieux vaut tard que jamais :) – Harmit