背景:

  将数据库统计的数据,封装成了两个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对象中的值以整数返回。

BigDecimal空指针异常——个人应用的更多相关文章

  1. BigDecimal数据加法返回值接收

    1.相加 两个BigDecimal变量a,b. 如果想进行相加,即a加b的话,返回值需要使用a进行接收,如下: a = a.add(b); BigDecimal为不可变类, 所以执行运算的结果需要再返 ...

  2. BigDecimal的加减乘除及比较大小

    import java.math.BigDecimal; import static java.lang.System.out; public class BaseClass { public sta ...

  3. [Day17]常用API(System、Math、Arrays、BigInteger、BigDecimal)

    1.基本类型包装类 1.1 8种基本类型对应的包装类 字节型 byte Byte 短整型 short Short 整型 int Integer 长整型 long Long 字符型 char Chara ...

  4. Java基础学习笔记之:System类;Math类;Arrays类BigInteger,BigDecimal

    System类 在API中System类介绍的比较简单,我们给出定义,System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作.System类不能手动创建对象,因为构造方法被priva ...

  5. BigDecimal 详细解析

    参加工作之后发现公司项目的数据库有关数值的字段类型,很少是之前常用的float和double, 而是一个没有接触过的decimal,在Java中表示的类型为BigDecimal, 而在业务中常常有关B ...

  6. Java BigDecimal 转换,除法陷阱(转)

    源地址:   http://blog.csdn.net/niannian_315/article/details/24354251 今天在用BigDecimal“出现费解”现象,以前虽然知道要避免用, ...

  7. JAVA BigDecimal 小数点处理

    1,保留两位小数 方法一:{ double c=3.154215; java.text.DecimalFormat myformat=new java.text.DecimalFormat(" ...

  8. FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时遇到的坑,给textview赋值时出现的空指针异常

    FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时,给textview赋值时出现的空指针异常 public class BaseFr ...

  9. BigDecimal 处理集合

    1  创建一个BigDecimal 对象 BigDecimal Sum = new BigDecimal(0); 2  一个BigDecimal 对象,保留2位小数点 Sum.setScale(2,B ...

随机推荐

  1. 第三篇 makefile的伪目标

    我们来思考一下makefile中的目标究竟是什么?实际上,在默认情况下:    1.make将makefile的目标认为是一个文件:    2.make解释器比较目标文件和依赖文件的新旧关系,决定是否 ...

  2. 9.1 UDP协议

    TCP 协议是面向连接的基于流的,可靠的传输服务.UDP是无连接的,基于数据报的,不可靠的传输服务,UDP没有粘包,但是会产生丢包. UDP模型如下: 可以看到,服务器端不用listen,也不用acc ...

  3. 【c++基础】如何获取工程项目当前路径

    工程项目当前路径 #include <direct.h> int main( ) { ]; _getcwd(buffer, ); std::cout << buffer < ...

  4. linux中grep用法(“或”、“与”)

    1.普通用法 grep keyword 若果keyword中有空格 grep "keyword" 例如: ls | grep mp4 2.“与”操作(其实就是多次筛选) grep ...

  5. 51Nod:1085 背包问题

    1085 背包问题  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为 ...

  6. HTML标签 select 里 动态添加option

    HTML标签 select 里 动态添加option: ☆ var today = new Date(); var yearNow = today.getFullYear(); var optiong ...

  7. python 二维list取列

    b = [i[0] for i in a] # 从a中的每一行取第一个元素.

  8. 如何快速配好java环境变量和查看电脑上安装JDK的版本位数

    今天一个新手在群里问自己的Eclipse打不开,然后我是属于那种热心肠的人,一般自己知道的就会告诉他们,看了下,是环境变量没有配好,反正我觉得配环境比较简单,现在就教大家简单的环境变量配法 path ...

  9. day7 python学习

    今日内容# 枚举 此代码可以用于对有一定值的列表进行按带序列号的方式打印出来 lis=['手机','电脑','潜艇','手表'] for index,i in enumerate(lis,1): pr ...

  10. 比jsonpath 更方便的json 数据查询JMESPath 使用

      类似xml 的xpath json 有jsonpath 都是为了方便进行数据查询,但是jsonpath 的功能 并不是很强大,如果为了方便查询可以使用jmespath. 以下为简单使用: 查询格式 ...