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 即可

相关文章
|
7月前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
124 0
|
21天前
|
Java
Java项目中高精度数值计算:为何BigDecimal优于Double
在Java项目开发中,涉及金额计算、面积计算等高精度数值操作时,应选择 `BigDecimal` 而非 `Double`。`BigDecimal` 提供任意精度的小数运算、多种舍入模式和良好的可读性,确保计算结果的准确性和可靠性。例如,在金额计算中,`BigDecimal` 可以精确到小数点后两位,而 `Double` 可能因精度问题导致结果不准确。
|
4月前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
23天前
|
Java
Unable to obtain OffsetDateTime from TemporalAccessor: {},ISO resolved to 2024-11-26T20:55:26 of type java.time.format.Parsed
Unable to obtain OffsetDateTime from TemporalAccessor: {},ISO resolved to 2024-11-26T20:55:26 of type java.time.format.Parsed
33 0
|
3月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
105 1
|
4月前
|
Java
【Java基础面试十】、何对Integer和Double类型判断相等?
这篇文章讨论了如何在Java中正确比较`Integer`和`Double`类型的值,指出不能直接使用`==`操作符比较不同类型,而应该将它们转换为相同的基本数据类型(如`double`)后进行比较。
【Java基础面试十】、何对Integer和Double类型判断相等?
|
4月前
|
JSON 前端开发 JavaScript
JSON parse error: Cannot deserialize value of type `java.lang.Integer` from Boolean value
这篇文章讨论了前端Vue应用向后端Spring Boot服务传输数据时发生的类型不匹配问题,即后端期望接收的字段类型为`int`,而前端实际传输的类型为`Boolean`,导致无法反序列化的问题,并提供了问题的诊断和解决方案。
JSON parse error: Cannot deserialize value of type `java.lang.Integer` from Boolean value
|
5月前
|
Java
Java中将保留四位小数的Double转换为String的方法详解
选择合适的方法,可以使代码更加简洁、高效,同时也能满足不同场景下的需求。
88 5
|
6月前
|
Java
深入了解Java中的BigDecimal类及其方法
深入了解Java中的BigDecimal类及其方法
|
6月前
|
安全 Java
java中BigDecimal详解
java中BigDecimal详解
下一篇
DataWorks