组长和研发总监吵起来了!

点击下方👇👇公众号卡片:程序员老鬼,回复关键字:chatgpt 获取插件安装文件和ChatGPT资料合集


今天办公室里上演了一出好戏,就是咱们的组长和研发总监因为一个技术问题吵起来了。


什么问题呢?就是系统里的价格和金额,到底是设计成BigDecimal好,还是Long类型好。这问题看着挺专业,其实咱们平时开发中挺常见的。



先说说组长,他是个老油条了,开发经验丰富,一脸的沧桑。组长坚持用BigDecimal,他说他带的项目都是这么干的,从来没出过问题,一种“我走过的桥比你走过的路还多”的感觉。

再看看总监,总监的意见是用Long,他举了个例子,说以前公司因为金额的问题出过大乱子,财务部门把开发部门骂得狗血淋头,后来改成Long就平安无事了。

这个例子一出来,就感觉重量级多了,毕竟谁都不想被骂得狗血淋头,对吧?

然后呢,我这个两年半经验的小开发,心里其实更倾向于用Long。

为啥呢?因为直接用长整数类型计算,感觉爽多了,不用那么多转换,直接上手干。

不过,这事儿就这么结束了吗?当然不是!咱们办公室的讨论才刚刚开始。

有同事提出来说,存储金额,用Long类型,以分为单位是最合适的,毕竟我国最小货币单位就是分嘛。但是,如果涉及到精确的汇算和利息计算,可能就需要考虑更小的单位了,比如豪、微、纳等等。

另一位同事又说,用Long类型的话,处理财务金额就没法支持小数点了。但是,如果用BigDecimal,虽然可以处理小数点,但是一旦数额太大,就可能出现溢出的问题。你看,每个选择都不是完美的嘛。


还有一个评论很有意思,说的是一个老司机的经验。

他做过三套金融系统,一套用的是BigDecimal,两套用的是Long。如果让他再选,他肯定还是选Long。

他的理由是
做过三套金融系统,一套理财用BigDecimal,两套信贷用的long。如果再让我选择,我肯定用long。单位到分一般就够了,到厘的话道理是一样的,全局一致就行。很多运算变得简单不易出错,你不能指望人人都会处理好精度问题,long会避免很多麻烦,包括前后端交互也统一用long。实际上连利率都可以用long,系统设置全局精度(倍数),可以避免很多精度问题。

还有网友表示:
二者都可以bigDecimal计算过程会有精度损失,但是把最终的结果做四舍五入就可以了!long计算除法有缺陷!因为可能出现非常长的小数位数,根本无法估计!计算出来的结果误差大,要想减少误差,只能将小数位扩大非常大的倍数!计算过程复杂耗时长!

那我的看法呢?

我觉得,其实这两种方式各有利弊,关键还是要看具体的项目需求,如果需要高精度的金融计算,BigDecimal可能更合适。但如果是普通的商业计算,用Long就足够了,简单又高效。

总的来说,不管你选择哪种方案,只要能解决问题就是好方案,那如果是你你会选择设计成BigDecimal还是 Long?


扫描上方方二维码,购买ChatGPT实战课程送ChatGPT独享账号!


并且课程包含超多ChatGPT前沿玩法,帮助大家熟练掌握ChatGPT!