java.math.BigDecimal无法转换为java.lang.String?

java.math.BigDecimal无法转换为java.lang.String?,java,jtable,sqldatatypes,Java,Jtable,Sqldatatypes,我试图添加数据类型(money)的行值,其中十进制后的零在Jtable中自动形成,如下所示 55 28 60 20 50.0000 在运行时日志上显示此错误 无法将java.math.BigDecimal转换为java.lang.String 下面是从Jtable添加行的代码 double total = 0; for(int i = 0; i<table.getRowCount(); i++){ double amount = Do

我试图添加数据类型(money)的行值,其中十进制后的零在Jtable中自动形成,如下所示 55 28 60 20 50.0000

在运行时日志上显示此错误

无法将java.math.BigDecimal转换为java.lang.String

下面是从Jtable添加行的代码

        double total = 0;
        for(int i = 0; i<table.getRowCount(); i++){
            double amount = Double.parseDouble((String) table.getValueAt(1, 6) );
            total+=amount;
        }
        totalSum.setText(String.valueOf(total));
双倍合计=0;
对于(inti=0;i变化

无需将
BigDecimal
转换为
String
,只需进行
double

更改即可

double amount = Double.parseDouble((String) table.getValueAt(1, 6) );


无需将
BigDecimal
转换为
String
,只需将
double

转换为

BigDecimal total = BigDecimal.ZERO;
for (int i = 0; i < table.getRowCount(); ++i) {
    final BigDecimal amount = (BigDecimal)table.getValueAt(i, 6);
    total = total.add(amount);
}
totalSum.setText(total.toString());
BigDecimal总计=BigDecimal.ZERO;
对于(int i=0;i
尝试以下方法:

BigDecimal total = BigDecimal.ZERO;
for (int i = 0; i < table.getRowCount(); ++i) {
    final BigDecimal amount = (BigDecimal)table.getValueAt(i, 6);
    total = total.add(amount);
}
totalSum.setText(total.toString());
BigDecimal总计=BigDecimal.ZERO;
对于(int i=0;i
表。getValueAt(1,6)
已经返回了一个
BigDecimal
,为什么您认为需要将其强制转换为
字符串
?使用
BigDecimal.doubleValue()
有什么问题?您可以使用
对象.toString()
可靠地将对象转换为字符串(假设
对象
不为null)Jim Garrison先生你能给我一个精确的解决方案吗?顺便说一句,你总是得到同一单元格(1,6)的值。我猜你指的是table.getValueAt(I,6)
table.getValueAt(1,6)
已经返回了一个
BigDecimal
,为什么您认为需要将其强制转换为
String
?使用
BigDecimal.doubleValue()
有什么问题?您可以使用
object.toString()
可靠地将对象转换为字符串(假设
object
不为null)Jim Garrison先生你能给我一个精确的解吗?顺便说一句,你总是得到同一个单元格(1,6)的值。我猜你指的是table.getValueAt(I,6)@KamranAshiq编译器只知道
getValueAt()
是一个
对象
。显然,该方法是以
对象
作为返回类型定义的。如果该方法真的返回一个
BigDecimal
,在这种情况下,您可以将其转换为
BigDecimal
,然后使用
doubleValue()
((BigDecimal)table.getValueAt(1,6)).doubleValue()
。这只在它返回的对象确实是
BigDecimal
时有效。它不会将任何其他内容转换为
BigDecimal
。相反,如果它的类型不正确,则会出现异常。是的,但我认为您应该指出这会失去精度:您只能使用BigDecimal进行转换,而不会出现此问题。@KamranAshiq All-t编译器知道
getValueAt()
是一个
对象
。显然,该方法是以
Object
作为返回类型定义的。如果该方法真的返回一个
BigDecimal
,在这种情况下,您可以将其转换为
BigDecimal
,然后使用
doubleValue()
((BigDecimal)表.getValueAt(1,6)).doubleValue()
。这只在它返回的对象确实是
BigDecimal
时才有效。它不会将任何其他内容转换为
BigDecimal
。相反,如果它的类型不正确,则会出现异常。是的,但我认为您应该指出这会失去精度:您只能使用BigDecimal进行转换,而没有这个问题。