首页
学习
活动
专区
圈层
工具
发布

金额计算字段类型用Long,还是BigDecimal ?

大家好,我是苏三,又跟大家见面了 前言 对于从事后端开发的小伙伴来说,可能会遇到金额计算字段的类型,到底该用Long,还是BigDecimal的困扰。...甚至有些公司的架构师跟DBA,有时也会为了金额计算字段的类型而PK。 今天这篇文章专门跟大家一起聊聊这个话题,希望对你会有所帮助。...按照产品需求,满100减20的优惠券,用户下单金额是98.5元时,应该无法使用这张优惠券。 小明心想:这太简单了!...三、两种解决方案的深度PK 面对金额计算的精度问题,Java开发者主要有两种选择。 让我们深入剖析每种方案的实现和原理。 3.1 方案一:货币使用Long 这种方法的核心思想:用分来计算,不用元。...希望这篇文章能帮你在金额计算的路上少踩坑,走得更稳更远。 此外,还包含13大技术专栏:系统设计、性能优化、技术选型、底层原理、Spring源码解读、工作经验分享、痛点问题、面试八股文等。

36610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【详解】Java数字金额转化为英文金额

    Java数字金额转化为英文金额在处理财务数据时,有时需要将数字形式的金额转换成英文描述的形式,比如在生成正式文件或发票时。本文将介绍如何使用Java实现这一功能。1....应用中,将数字金额转换为英文金额的需求常见于银行系统、财务软件等场景。这种功能通常用于生成正式的财务文件,如支票、发票等,以确保金额的准确性和防篡改性。...通过上述代码,你可以将任何有效的数字金额转换为其对应的英文表示形式。将Java中的数字金额转换为英文金额是一个常见的需求,尤其是在处理财务报告、发票等需要精确表示金额的场景中。...组合结果,形成最终的英文金额表示。main​方法:测试示例,将1234.56转换为英文金额表示。...如果需要处理更大的金额或更复杂的单位,可以进一步扩展和优化。

    2.2K00

    Java实现红包随机金额算法

    答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储。。 采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低。 2....分配:红包里的金额怎么算?为什么出现各个红包金额相差很大? 3. 答:随机,额度在0.01和剩余平均值*2之间。...红包的设计 答:微信从财付通拉取金额数据郭莱,生成个数/红包类型/金额放到redis集群里,app端将红包ID的请求放入请求队列中,如果发现超过红包的个数,直接返回。...答:没有队列,一个红包一条数据,数据上有一个计数器字段。 10.有没有从数据上证明每个红包的概率是不是均等? 答:不是绝对均等,就是一个简单的拍脑袋算法。 11.拍脑袋算法,会不会出现两个最佳?...答:会出现金额一样的,但是手气最佳只有一个,先抢到的那个最佳。 12. 每领一个红包就更新数据么? 答:每抢到一个红包,就cas更新剩余金额和红包个数。 13.红包如何入库入账?

    1.5K20

    算法思考:红包金额生成

    本篇先不关注整体架构,选择红包金额的计算方法作为分析内容。 在当时的项目中,红包金额计算主要是采用了基于一些入参的随机数生成,并且生成的是单个红包金额,并未使用队列方式做预生成。...二 题目描述 要求设计在微信群抢红包的算法,红包总金额为 m 元,分成 n 份,要求返回一个红包金额数组。...一个简单的方法,n 个人,生成 n 次金额数据,当然,我们也要保证 n 次的金额综合=m 元,且每次每人领取到的金额最小值是 0.01 元,也就是一分钱;最大值是当前的剩余金额-剩余人数。...例如总金额 1 元,5 个人可抢,那么第一个人可以抽到的最大金额是 0.96 元,之后每个人领取一元,这是最极端的情况。 其次,上面的这种算法是否能够保证绝对随机?...既然生成的金额数组可能不是绝对平均,那么我们再生成一次随机数组,调整初始金额数组中各元素的顺序,做个随机乱序,那么就可以接近题目要求的效果。

    1.8K30
    领券