Java BigDecimal peut avoir de virgule au lieu de dot?
J'ai une chaîne de la valeur que je veux attribuer à un BigDecimal. Lorsque je mets à jour la valeur décimale avec un nombre comme 100.23
, il fonctionne très bien mais quand je mets à jour avec un nombre comme 100,23
le code génère une exception. Pourquoi est-ce?
Merci de poster votre code et le "dump".
La javadoc de
BigDecimal n'a pas un point ou une virgule. Vous pouvez analyser une Chaîne de caractères qui contient une virgule et vous pouvez produire une chaîne de caractères qui contient une virgule à partir d'un BigDecimal, mais cela ne signifie pas que la BigDecimal contient.
La javadoc de
BigDecimal
sont assez clairs sur ce format est autorisé; docs.oracle.com/javase/6/docs/api/java/math/...BigDecimal n'a pas un point ou une virgule. Vous pouvez analyser une Chaîne de caractères qui contient une virgule et vous pouvez produire une chaîne de caractères qui contient une virgule à partir d'un BigDecimal, mais cela ne signifie pas que la BigDecimal contient.
OriginalL'auteur Jean Tehhe | 2013-09-10
Vous devez vous connecter pour publier un commentaire.
parce que vous avez essayé de mettre un "," dans un certain nombre.
vous pouvez utiliser ce code pour analyser un nombre à virgule:
vous devez également utiliser des float ou double si il n'y a pas de raison particulière pour laquelle vous décimal.
comme je l'ai édité et a donné un exemple. mais encore la plupart des langues communes n'acceptent pas de virgule dans une simple analyse ou l'affectation
Vous ne devez pas utiliser float ou double, sauf si vous êtes sûr que c'est approprié. Essayez Système..println(new BigDecimal(100.23 d)); - Vous pouvez et, parfois, d'y prendre-par-un-cent des erreurs d'arrondi.
...la raison particulière d'être "vous voulez être sûr de la valeur" 🙂
OriginalL'auteur No Idea For Name
La
BigDecimal(String)
constructeur la documentation répertorie tous les formats valides et les personnages. Notez que le,
n'est pas inclus dans cette liste.OriginalL'auteur Kevin Bowersox
Si vous ne pouvez pas être sûr si votre Chaîne comporte des virgules ou de points, vous pouvez utiliser
replace(char, char)
de la classe String. Par exemplemyString.replace(',', '.')
.Droit, dans cette solution, vous devez savoir quel symbole est utilisé comme séparateur décimal.
OriginalL'auteur Kayz