我是靠谱客的博主 笨笨鞋子,最近开发中收集的这篇文章主要介绍关于BigDecimal.ZERO的判空,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在写需求时发现一个关于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的判空所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部