java.math.BigDecimal是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.math.BigDecimal是啥意思相关的知识,希望对你有一定的参考价值。

List querylist=(List) session.getAttribute("querylist");
int querylistLen=querylist.size();
for(int i=0;i<querylistLen;i++)
List querylist2=(List) querylist.get(i);
int querylistLen2=querylist2.size();
for(int j=0;j<querylistLen2;j++)
Object test=querylist2.get(j);//代码报错行
Label label=new Label(j, i, (String) test);
sheet.addCell(label);

以上代码为从session中获取一个list,这个list当中有包含有几个list,类似二维数组那样,然后遍历list,将数据写入excel,报如下错java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String

BigDecimal表示一个大整数,一般情况下很多整型都有个最大值的,但是有时候我们需要处理一些超过这个最大值的值,这个时候就出现了BigDecimal这样的类用于表达大数值,你这个错误应该是类型转换过程中出现了问题 参考技术A

BigDecimal 转 字符串不可强制转换,需要定义数据格式。以下代码为例:

BigDecimal d = new BigDecimal(1.0 / 3.0); //定义一个无限小数
DecimalFormat df = new DecimalFormat("0.00"); //定义数据格式,保留两位小数
String s = df.format(d); //通过定义的数据格式得到字符串,s的值为"0.33"

参考技术B java.lang.ClassCastException,类型转换异常~!你看报的错, java.math.BigDecimal cannot be cast to java.lang.String。它是说无法从 java.math.BigDecimal转换成String。
也就是说类型不匹配~!你仔细看看报错那行代码的类型
参考技术C 如果没有特殊处理,从数据库拿出来的数字都是BigDecimal 。就是通过rs.getObject()拿出来的。

以上是关于java.math.BigDecimal是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

BigDecimal.divide方法

java.math.BigDecimal cannot be cast to java.lang.String   ----解决方案

java.math.BigInteger 不能转换为 java.math.BigDecimal

Java.math.BigDecimal类

java.math.BigDecimal类multiply的使用

java.math.BigDecimal 不能转换为 java.lang.String?