首页 > 解决方案 > 哪个数据类型用于 sum(amount) ,该数量为负值

问题描述

我从数据库中检索数据,如 sum(amount) 它显示负值,如 -12447904888.15,该数量列数据类型在 sql 中是双倍的。在 java 中,我们可以在运行时将该列声明为 Bigdecimal 数据类型我有一个错误 java.lang.double cant convert into java .math.decimal 那么如何修复它

public List<Chart> showchartPage(String bankname) {
  return applicationLabelDao.createShowChart(bankname)
    .stream()
    .map(data -> new Chart((String) data[0], (BigDecimal) data[1]))
    .collect(Collectors.toList());
}

标签: java

解决方案


这里:

(BigDecimal) data[1]

演员表。强制转换的意思是:“我程序员知道实际的类型data[1]是 BigDecimal。所以,亲爱的编译器,请允许我像 BigDecimal 的实例一样使用它”。

问题是:当然,在运行时该类型必须与您告诉编译器的类型匹配!但是您的数据库double会向您返回变量。而且adouble不是aBigDecimal

换句话说:当您想将某物视为 BigDecimal 时,该物必须BigDecimal。您可以尝试BigDecimal.valueOf(data[1])改用,这将根据来自数据库的值创建一个 BigDecimal 实例。有关更多指导,请参见此处。

(并提示:您的其他演员(String) data[0] 可能有效,因为该 data[0] 实际上是一个 String 对象)


推荐阅读