Type mismatch Can‘t assign java.math.BigDecimal to java.lang.Double

简介: Type mismatch Can‘t assign java.math.BigDecimal to java.lang.Double

在数据库中通过 sum 查询出来的数值,进行赋值时会进行报错

MyBatis 的 XML 文件类似这样

select sum(xxx) as xxx, sum(yyy) as yyy from ttt t
<where>
    ……
</where>

查询结果是一条记录,我使用 HashMap 进行存放,Dao 层定义类似这样

HashMap<String, Double> getXXXXX(HashMap map);

调用时是这样

HashMap<String, Double> sum = xxxxDao.getXXXXX(map);
if (sum != null) {  
    page.getList().get(i).setXXXX(sum.get("xxx"));
    page.getList().get(i).setYYYY(sum.get("yyy"));
}

然后就报错了,报错如下:

Type mismatch Can't assign java.math.BigDecimal to java.lang.Double

解决方法是,将 HashMap<String, Double> 定义为 HashMap<String, Object> ,然后进行一次转换,转换代码如下:

page.getList().get(i).setXXXX(Double.valueOf(sum.get("xxx").toString()));

将 Object 转换为 String,再将 String 转换为 Double 即可

相关文章
|
4月前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
85 0
|
4月前
|
存储 Java
百度搜索:蓝易云【Java语言之float、double内存存储方式】
由于使用IEEE 754标准进行存储,float和double类型可以表示非常大或非常小的浮点数,并且具有一定的精度。然而,由于浮点数的特性,它们在进行精确计算时可能会存在舍入误差。在编写Java程序时,需要注意使
90 0
|
4月前
|
存储 Java
你知道Java中的BigInteger类和BigDecimal类吗?
你知道Java中的BigInteger类和BigDecimal类吗?
|
1月前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
1月前
|
Java
【Java基础面试十】、何对Integer和Double类型判断相等?
这篇文章讨论了如何在Java中正确比较`Integer`和`Double`类型的值,指出不能直接使用`==`操作符比较不同类型,而应该将它们转换为相同的基本数据类型(如`double`)后进行比较。
【Java基础面试十】、何对Integer和Double类型判断相等?
|
2月前
|
Java
Java中将保留四位小数的Double转换为String的方法详解
选择合适的方法,可以使代码更加简洁、高效,同时也能满足不同场景下的需求。
37 5
|
3月前
|
Java
深入了解Java中的BigDecimal类及其方法
深入了解Java中的BigDecimal类及其方法
|
3月前
|
安全 Java
java中BigDecimal详解
java中BigDecimal详解
|
3月前
|
NoSQL 测试技术 Scala
java.lang.RuntimeException: Can‘t start redis server. Check logs for details.
java.lang.RuntimeException: Can‘t start redis server. Check logs for details.
70 1
|
3月前
|
Java
Java的double值保留2位小数
【6月更文挑战第16天】Java的double值保留2位小数
111 0