java - 无法将 Double 数字放入 BigDecimal 变量中

标签 java double classcastexception bigdecimal jspinner

我正在使用一个 Double 变量来保存商品价格。该变量存储在 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

最佳答案

此程序说明了 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 可能不准确。

关于java - 无法将 Double 数字放入 BigDecimal 变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27780642/

相关文章:

java - Windows 光标大小大于可用的最大值

c# - 如何安全正确地将用户输入的数字转换为 double?

java.lang.ClassCastException : java. lang.String 无法转换为 [Ljava.lang.Object; - 使用 hibernate 从数据库中获取查询

java - quartz - java.lang.ClassCastException org.quartz.JobDetail 无法使用 JobStoreTX 转换为 ScheduledJobDetail

java - 如何清除JavaFX GraphicsContext中的路径?

java - 如果线程列表中的任何线程发生异常,则中断所有线程

c++ - 如何在 OpenCV 中使用双类型映射进行重新映射

android - 具有不同 Items 和 ViewHolder 的 ListView 导致 ClassCastException

java - 如何阻止 BasicArrowButton 展开以占用整个工具栏?

java - 在 long 和 double 之间进行类型转换时得到意想不到的结果