Ne peut pas mettre le Double du nombre de BigDecimal variable
Je suis en utilisant une variable de type Double qui détient le prix de l'Article. Cette variable est stockée dans une base de données postgresql sous une colonne de type monétaire. J'utilise setBigDecimal(position,valeur) fonction SQL.En d'autres part, je suis en utilisant un JSpinner comme entrée.
Double current = 0.0;
Double min = (double) Integer.MIN_VALUE;
Double max = (double) Integer.MAX_VALUE;
Double step = 0.1;
JSpinner priceSpinner = new JSpinner(new SpinnerNumberModel(current, min, max, step));
Lorsque l'utilisateur clique sur un bouton, j'obtiens la valeur passé la frontière par l'utilisateur et de le mettre dans la base de données via des requêtes SQL.
insertStmt.setBigDecimal(position,BigDecimal.valueOf((double) priceSpinner.getValue()));
Mais, j'ai eu cette petite erreur,
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Double
- JSpinner.getValue() renvoie un objet que vous essayez de lancer en Double (ce Qui ne semble pas être possible car il est courant de classe BigDecimal) que Vous avez besoin de BigDecimal, essayez setBigDecimal(position,(BigDecimal) priceSpinner.getValue());
- Pouvez-vous poster le full stack trace la ligne de votre code est réellement la cause de l'exception?
- Remarque importante: essayez de ne pas instancier BigDecimal objets avec un double paramètre. Toujours passer un argument de type Chaîne. Il y a un bon morceau, mais je ne trouve pas le lien pour la vie de moi.
- lorsque le priceSpinner n'est pas rempli (la valeur par défaut est de zéro), j'ai eu cette erreur d'Exception dans le thread "AWT-EventQueue-0" java.lang.ClassCastException: java.les mathématiques.BigDecimal ne peut pas être lancé à java.lang.Double
Vous devez vous connecter pour publier un commentaire.
Ce programme illustre la conversion dans les deux sens entre le Double et BigDecimal:
Noter que la conversion en Double peut ne pas être exacte.
Évidemment
priceSpinner.getValue()
retourneBigDecimal
et que vous essayez de le convertir endouble
et puis retour àBigDecimal
.Pourquoi ne pas vous venez de le faire?