Java grand format décimal nombre exception
Pourquoi le code ci-dessous jeter un java format de nombre exception?
BigDecimal d = new BigDecimal("10934,375");
source d'informationauteur The amateur programmer
Vous devez vous connecter pour publier un commentaire.
Oui, le
BigDecimal
classe à ne pas prendre deLocale
en compte dans son constructeur qui prend unString
comme on peut le lire dans la Javadoc de ce constructeur:Si vous souhaitez analyser selon un autre
Locale
qui utilise la virgule comme séparateur décimal, vous devez utiliserjava.text.DecimalFormat
avec unLocale
.Exemple:
Note: vous devez obtenir une instance de
DecimalFormat
(une sous-classe deNumberFormat
) pour être en mesure d'appeler la méthodesetParseBigDecimal
. Sinon il renvoie unDouble
au lieu de cela, ce qui est un nombre à virgule flottante binaire et binaire des nombres à virgule flottante ne peut pas représenter avec précision de nombreuses fractions décimales. De sorte que serait la cause d'une perte de précision dans de nombreux cas.Le problème est que constructeur de
BigDecimal
nécessite un nombre décimal format, où les décimales sont à droite après le point décimal.
au lieu de la virgule décimale,
donc le bon format pour ce cas précis serait:Vous pouvez utiliser NumberFormat de choisir les paramètres Régionaux, voir l'exemple: