zoukankan      html  css  js  c++  java
  • 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对象中的值以整数返回。

  • 相关阅读:
    Collection集合总结
    JAVA泛型通配符T,E,K,V区别,T以及Class,Class的区别【转】
    Runnable和Thread
    jdk自带的函数式接口(配合lambda使用)
    java8-接口的静态方法(static)和默认方法(default)
    Java 8
    java8-Stream流【转】
    java8-lambda表达式
    Oracle:ORA-01461报错
    ASP.NET Core 入门笔记2,建立项目
  • 原文地址:https://www.cnblogs.com/sun7897/p/10103352.html
Copyright © 2011-2022 走看看