java.math.BigDecimal无法转换为java.lang.String?
我试图添加数据类型(money)的行值,其中十进制后的零在Jtable中自动形成,如下所示 55 28 60 20 50.0000 在运行时日志上显示此错误 无法将java.math.BigDecimal转换为java.lang.String 下面是从Jtable添加行的代码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
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进行转换,而没有这个问题。