不能在bigdecimal变量中放入双数

o75abkj4  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(409)

我使用了一个双变量来保存物品的价格。该变量存储在postgresql数据库中的money类型列下。我使用setbigdecimal(position,value)sql函数。在另一部分中,我使用jspinner作为输入。

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));

当用户单击一个按钮时,我得到用户输入的值,并通过sql查询将其放入数据库。

insertStmt.setBigDecimal(position,BigDecimal.valueOf((double) priceSpinner.getValue()));

但是,我犯了个小错误,

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Double
apeeds0o

apeeds0o1#

这个程序演示了在双精度和双精度十进制之间的双向转换:

import java.math.BigDecimal;

public class Test {
  public static void main(String[] args) {
    Double d1 = 1.3;
    BigDecimal bd1 = BigDecimal.valueOf(d1.doubleValue());
    Double d2 = bd1.doubleValue();
    System.out.println(d2);
  }
}

请注意,到double的转换可能并不精确。

h7appiyu

h7appiyu2#

很明显 priceSpinner.getValue() 退货 BigDecimal 你想把它变成 double 然后回到 BigDecimal .
你为什么不这么做?

insertStmt.setBigDecimal(position, (BigDecimal) priceSpinner.getValue());

相关问题