java - 哪个数据类型用于 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());
}
解决方案
这里:
(BigDecimal) data[1]
是演员表。强制转换的意思是:“我程序员知道实际的类型data[1]
是 BigDecimal。所以,亲爱的编译器,请允许我像 BigDecimal 的实例一样使用它”。
问题是:当然,在运行时该类型必须与您告诉编译器的类型匹配!但是您的数据库double
会向您返回变量。而且adouble
不是aBigDecimal
!
换句话说:当您想将某物视为 BigDecimal 时,该物必须是BigDecimal。您可以尝试BigDecimal.valueOf(data[1])
改用,这将根据来自数据库的值创建一个 BigDecimal 实例。有关更多指导,请参见此处。
(并提示:您的其他演员(String) data[0]
可能有效,因为该 data[0] 实际上是一个 String 对象)
推荐阅读
- extjs - 如何更新 extJs 中的存储(出现 404 错误)?
- database - 估计 Google BigTable 中的数据大小
- c - 如何在C中打印菱形图案?
- docker - 在 Docker 中启动 JFrog 的问题
- javascript - BroadcastDispatcher 完成事件仅调用一次 (discord.js)
- html - 在 HTML 中,我应该为幻想或其他发明的语言使用什么语言属性代码?
- objective-c - 使用 vImageScale_ARGB8888 缩放图像时图像质量受到影响 - Cocoa Objective C
- freemarker - 如何使用 freemarker 创建 csv 输出?
- javascript - HTML表单不向节点js发送数据
- spring - 使用spring cloud gateway登录后spring could oauth2重定向到“/”