java接收number数据类型(Double与BigDecimal)
昨天⾃⼰开发了⼀个bug ~~~~~~~ 记录⼀下长点记性
数据库定义了⼀个字段数据类型为:number(15,2)
bigdecimal转换为integer⼀看想着反正是数字的,就⽤Double接收吧,
d =(Double) rs.getObject("XXX")
结果就报错了:不能强制转换成Double
修改代码很容易 BigDecimal bgd = (Object("XXX");
Double d = bgd.doubleValue();
但是要搞清楚BigDecimal和Double的区别
写了⼀段代码测试了⼀下
很奇怪
再修改⼀下:
⼜不奇怪了,查询其他同学的说法,BigDecimal与Double的主要区别在精度和四舍五⼊上,还有同学说Java中的简单浮点数类型float和double不能够进⾏运算,看上述结果,double数据类型的四则运算确实是有问题的,同学们以后在处理需要进⾏运算的数据时还是使⽤BigDecimal和BigInteger数据类型要安全⼀些。
还有还有,若Dao层⽅法返回⼀个整型数据,返回值类型⼀定要写Integer,⽽不是int。因为如果数据库查询结果为null,null在转换为int 时就会出错,⽽这个错误我们不好捕获,所以⽤Integer数据类型接收就会⽐较安全,接收后在service层再进⾏⾮空判断,就很好控制了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论