昨天自己开发了一个bug ~~~~~~~  记录一下长点记性

oracle数据库定义了一个字段数据类型为:number(15,2)

一看想着反正是数字类型的,就用Double接收吧,

Double d =(Double) rs.getObject("XXX")

结果就报错了:BigDecimal不能强制转换成Double

修改代码很容易           BigDecimal bgd = (BigDecimal)rs.getObject("XXX");
                                        Double d = bgd.doubleValue();

但是要搞清楚BigDecimal和Double的区别

写了一段代码测试了一下

java接收number数据类型(Double与BigDecimal)

很奇怪!!!

再修改一下:

java接收number数据类型(Double与BigDecimal)

又不奇怪了,查询其他同学的说法,BigDecimal与Double的主要区别在精度和四舍五入上,还有同学说Java中的简单浮点数类型float和double不能够进行运算,看上述结果,double数据类型的四则运算确实是有问题的,同学们以后在处理需要进行运算的数据时还是使用BigDecimal和BigInteger数据类型要安全一些。

 

相关文章:

  • 2021-12-10
  • 2021-12-10
  • 2021-12-10
  • 2021-11-18
  • 2021-11-28
  • 2021-12-10
  • 2021-11-18
  • 2021-08-06
猜你喜欢
  • 2021-11-18
  • 2021-11-18
  • 2021-11-18
  • 2021-11-18
  • 2021-11-18
  • 2021-11-28
  • 2021-12-10
相关资源
相似解决方案