问题
今天在网上看到一个有意思的问题,金额的数据类型用Long还是BigDecimal?
网友方案
针对这个问题,热情的网友们从各自的经历出发,提供了很多方案。我大概总结了下,居然有十种之多,虽然有的像调侃,但都有一定的道理。相信大家也很好奇,所以这里我先分享下网友们的方案。
Long
解读:单位到分,没有小数点,也就没有小数精度的问题。而且Long取值范围也足够了。
BigDecimal
解读:大家都这么用,BigDecimal就是为精确计算而生的。用long不专业,适应性不好。
Long和BigDecimal
解读:成年人不做选择,成年人什么都要。金额、价格这些用Long,汇率、费率这些要求的小数点比较多,那就用BigDecimal。
String
解读:万物皆可string。只是处理规则需要全部自己写,高手必备的技能。
Protobuf
解读:脱离框架讲方案都是耍流氓。Protobuf里边根本就没有BigDecimal,虽然可以用string或者自定义类型来代表Java中的BigDecimal,不过性能可能要差那么一点点。
自定义
解读:架构师的好苗子。程序不是能跑起来、不出错就行了,要考虑设计能不能自然体现业务需求,好不好理解、扩展和维护。
听领导的
解读:霍金来了中国也得站起来敬酒。这根本不是技术问题,一切听领导指示,但是也要做好自我保护。
问AI
解读:紧跟时代风口。作为有追求的技术人,就应该想着怎么偷懒怎么最快,先进的生产力工具要用起来,大语言模型回答这个问题滴水不漏、手到擒来,不信你试试!
节省型
解读:节俭是美德。就几百块钱的货,又不是航母和火箭,根本用不着Long,用int、short,甚至byte就能满足。