概述
最近在写需求时发现一个关于BigDecimal的bug,特此记录,适合和我一样刚进公司的菜鸟
需求背景
生成环境发现一个bug,上游传过来的totalAmount金额是0.00,类型是BigDecimal,但是看代码发现之前逻辑有漏洞,要走算税逻辑的话,只判断了totalAmount是否为空,而上游totalAmount为空时传0.00,所以需要改下逻辑
原有代码
第一次修改
debug发现orderInfo.getTotalAmount().equals(BigDecimal.ZERO)并不为true
查阅资料
看了其他小伙伴的发布以及自己看源码后发现,BigDecimal底层在判断时还会判断保留位数
上游传过来的是0.00,scale =2,看BigDecimal.ZERO底层得知,scale =0,所以return false
最终修改
传入的是由字符串"0.00"转换而来的BigDecimal,这样scale =2,equals的判断结果就是true了
最后
以上就是笨笨鞋子为你收集整理的关于BigDecimal.ZERO的判空的全部内容,希望文章能够帮你解决关于BigDecimal.ZERO的判空所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复