BigDecimal空指针异常——个人应用

背景:

  将数据库统计的数据,封装成了两个BigDecimal,此时要将两个BigDecimal进行运算。其中有一个没有数据的话,会报null(不管null值在前在后)

先上解决:

  我把数据库的数据进行了个判空,嘻嘻嘻,COALESCE(值,0),如果是没有数据的就返回0

  尝试(天真的我以为他会自己把null 给我转成0(如果这样的话为什么还报空指针!),所以就在找判0的方法):

    使用 b.compareTo(BigDecimal.ZERO)==0 来判空(b为接收到的返回值)   X报错

    那反过来BigDecimal.ZERO.compareTo(b)==0   X报错  天真

课外:

  不过百度的过程中了解了

  判断BigDecimal是否等于0的方法

    用equals比较的话,就是转成了字符串来比较,会出现 Bigdecimal b = new Bigdecimal("0") 和 Bigdecimal c = new Bigdecimal("0.0")==>返回就是false

    推荐使用:b.compareTo(BigDecimal.ZERO)==0 

 

  BigDecimal 的运算

    add(BigDecimal)        BigDecimal对象中的值相加,然后返回这个对象。 
    subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。 
    multiply(BigDecimal)  BigDecimal对象中的值相乘,然后返回这个对象。 
    divide(BigDecimal)     BigDecimal对象中的值相除,然后返回这个对象。 
    toString()                将BigDecimal对象的数值转换成字符串。 
    doubleValue()          将BigDecimal对象中的值以双精度数返回。 
    floatValue()             将BigDecimal对象中的值以单精度数返回。 
    longValue()             将BigDecimal对象中的值以长整数返回。 
    intValue()               将BigDecimal对象中的值以整数返回。

 

posted @   贱小提莫  阅读(19857)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示