将 BigDecimal 对象转换为双精度值

Ann*_*lee -1 java double casting bigdecimal

我正在使用 jdbc 连接查询数据库:

    List<Map<String, Object>> rows = jdbcTemplate.queryForList(SELECT_QUERY);   
    for(Map row : rows) {
        Results result = new Results();
        result.setResultValueDouble((Double)row.get("AMOUNT"));

        //add the data object to the list
        resultList.add(result);
    }
Run Code Online (Sandbox Code Playgroud)

但是,我查询的对象是 BigDecimal,我想将其转换为普通双精度。使用强制转换不起作用并给我一个ClassCastException.

有什么建议如何正确地投射这个对象吗?

感谢您的回复!

Boa*_*ann 5

result.setResultValueDouble(((BigDecimal)row.get("AMOUNT")).doubleValue());
Run Code Online (Sandbox Code Playgroud)

对对象进行强制转换不会更改对象的类型,只会更改用于引用该对象的表达式的类型,因此它无法将 BigDecimal 转换为 Double,因为 BigDecimal不是Double。相反,调用doubleValue()BigDecimal 的方法。