java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String

获取数据库查询的内容

currval =  Long.valueOf((String)table.get("currval")).longValue();

报类型转换错误:

Java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String

因为BigDecimal不能强制转换成 String类型,要用toString()作为中间桥梁转换。

currval =  Long.valueOf(table.get("currval").toString()).longValue();

同理:Object,BigDecimal转换成int doulbe ,long 也是一样的。



另外一种方法可以把它分开--两句分3句

定义一个Object类型的


从MySQL数据库里取decimal(18,2)封装到Map

[java]  view plain  copy
 print ?
  1. BigDecimal b = new BigDecimal(resultMap.get("amount"));  
  2. b=b.setScale(2, BigDecimal.ROUND_HALF_UP); //四舍五入  
在第一行报类型转换异常

解决方法:

[java]  view plain  copy
 print ?
  1. Object ob = resultMap.get("amount");  
  2. BigDecimal b = new BigDecimal(ob.toString());  
  3. b=b.setScale(2, BigDecimal.ROUND_HALF_UP); //四舍五入  





就像:

原来是这样:

String provId = "";

provId = ((BigDecimal) supply.get("provId")).toString();

supplyMap.put( provId, (String) supply.get("provName"));


然后现在把两句变为3句:

Object provId = "";

provId = supply.get("provId");
BigDecimal b = new BigDecimal(provId.toString());
supplyMap.put((String) provId, (String) supply.get("provName"));

你可能感兴趣的:(java中的一些报错)