• 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对象中的值以整数返回。

  • 相关阅读:
    putty配置
    BroadcastReceiver应用详解 (转)
    linux主设备号和次设备号
    Enable screen lock and HOME key (eclair and older versions)(转)
    C#获取用户桌面等特殊系统路径
    java中Thread与Runnable的区别
    博文索引
    FlinkCDC实践
    关于libxml2.so.2不被Gstreamer链接的解决
    s.length什么意思
  • 原文地址:https://www.cnblogs.com/sun7897/p/10103352.html
Copyright © 2020-2023  润新知