无法将 Double 数字放入 BigDecimal 变量中
Can't put Double number in BigDecimal variable
我正在使用保存商品价格的 Double 变量。该变量存储在 money 类型列下的 postgresql 数据库中。我使用 setBigDecimal(position,value) SQL function.In 其他部分,我使用 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
显然 priceSpinner.getValue()
returns BigDecimal
并且您正在尝试将其转换为 double
然后再转换回 BigDecimal
.
你为什么不做呢?
insertStmt.setBigDecimal(position, (BigDecimal) priceSpinner.getValue());
此程序说明了 Double 和 BigDecimal 之间的双向转换:
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 可能不准确。
我正在使用保存商品价格的 Double 变量。该变量存储在 money 类型列下的 postgresql 数据库中。我使用 setBigDecimal(position,value) SQL function.In 其他部分,我使用 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
显然 priceSpinner.getValue()
returns BigDecimal
并且您正在尝试将其转换为 double
然后再转换回 BigDecimal
.
你为什么不做呢?
insertStmt.setBigDecimal(position, (BigDecimal) priceSpinner.getValue());
此程序说明了 Double 和 BigDecimal 之间的双向转换:
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 可能不准确。