highFreqSurfer
V2EX  ›  问与答

后端大家是怎么处理金额分后面的小数的

  •  
  •   highFreqSurfer · May 13, 2024 · 5071 views
    This topic created in 907 days ago, the information mentioned may be changed or developed.

    是直接扔掉还是四舍五入

    30 replies  •  2024-05-21 10:15:28 +08:00
    1a7489
    1a7489
    May 13, 2024
    1
    进一法,我们公司是收钱的😁
    xiaoHuaJia
    xiaoHuaJia
    May 13, 2024
    2
    抹零让利消费者,我们是电商
    codeMore
    codeMore
    May 13, 2024
    3
    尽量按分计算。别按元了。
    munan56
    munan56
    May 13, 2024
    4
    统一按能接受得损耗计算。具体是 3 楼的例子
    ODESZA
    ODESZA
    May 13, 2024
    5
    我们是计算到小数点后六位,但是只显示两位,因为订单量大,财务要核账
    highFreqSurfer
    highFreqSurfer
    OP
    May 13, 2024
    6
    @codeMore 现在就是按分存的, 算比例的时候还是会有小数的
    lbunderway
    lbunderway
    May 13, 2024
    7
    国内就分 多币种就小数
    highFreqSurfer
    highFreqSurfer
    OP
    May 13, 2024
    8
    好了, 老板让四舍五入😂
    agagega
    agagega
    May 13, 2024 via iPhone❤️1
    9
    国内银行好像是四舍五入,但还有一种舍入方法叫 ties to even (银行家舍入法):1.445 舍成 1.44 ,1.455 舍成 1.46
    USCONAN
    USCONAN
    May 13, 2024
    10
    奇進偶捨也叫四捨六入五成雙
    RoshanWu
    RoshanWu
    May 13, 2024❤️9
    11
    所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。
    xuelu520
    xuelu520
    May 13, 2024
    12
    四舍五入,多笔可能总数对不上,要考虑这个
    yolee599
    yolee599
    May 13, 2024 via Android
    13
    不存小数,扩大倍数存整数,展示的时候除回来
    4Et5ShxMIq58n6Lr
    4Et5ShxMIq58n6Lr
    May 13, 2024
    14
    我这是按分计的,展示的时候处理一下
    3IOhG7M0knRu5UlC
    3IOhG7M0knRu5UlC
    May 13, 2024
    15
    有人知道银行用什么吗?
    miaotaizi
    miaotaizi
    May 13, 2024
    16
    @highFreqSurfer 老板的答案才是标准答案
    wowcz
    wowcz
    May 13, 2024 via Android
    17
    多存几个字段,该币种最小单位的数值,比如人民币就是分,还有币种,按需求计算和格式化
    ytmsdy
    ytmsdy
    May 13, 2024
    18
    最最最原始订单里面的信息,直接到分为止。至于算折扣的时候,要不要四舍五入,还是直接舍弃,和业务确认,最好系统里面都用一套处理逻辑,别收钱的时候+1 ,退钱的时候-1 。
    对了,最好用 decimal ,别用 double 或者 float ,要不然你对账的时候,差个 1 分钱,两分钱的,财务会天天追在你屁股后面然给你个解释的。
    rayyume
    rayyume
    May 13, 2024 via Android
    19
    前审计狗,按照财务那套来说,一定是保留两位小数。其实更多的情况下是前台显示 2 位小数,其实数字是保留大于 2 位小数,最后做底稿的时候是需要挤 rounding 的。
    highFreqSurfer
    highFreqSurfer
    OP
    May 13, 2024
    20
    @ytmsdy 现在金额是用整型存的, 单位是分, 算抽成的时候存在小数, 老板让四舍五入, 现在直接 math.round 完事了
    linauror
    linauror
    May 13, 2024
    21
    @highFreqSurfer #20 如果想要整体能对的上,那就每笔都入库抽成(按你们自己的规则做取舍,四舍五入没问题),算整体抽成的时候是每一笔加起来,而不是算总数后乘以抽成百分比
    7911364440
    7911364440
    May 13, 2024
    22
    long 类型,单位是分
    highFreqSurfer
    highFreqSurfer
    OP
    May 13, 2024
    23
    @linauror 现在就是每个商品都提前算好抽成的, 合计后能对得上
    wellerman
    wellerman
    May 13, 2024
    24
    10 多年前直接乘 100 ,后来接触到传销和高利贷行业,就变成直接乘 10000 ,数据库用 bigint 。
    chixinzei
    chixinzei
    May 13, 2024
    25
    @RoshanWu 我惊了,这是不是请了什么高手推演了无数遍才得到的公式
    abccccabc
    abccccabc
    May 13, 2024
    26
    我做过公司的分佣结算,原先是四舍五入,老板不相信我,让另外一个同事同样做了一遍,他是舍去分后面的部分。结果是我的结算多分给会员几十块钱。

    在当时,做项目时,没有任何人表态,我就按四舍五入的做了。结果所有人都给我一个鄙视的眼神。还和那个同事闹得挺不愉快,你舍掉分后的部分也不说下,立项时也没人反对,对不上数了,一堆事后诸葛亮出来说话。
    lisxour
    lisxour
    May 14, 2024❤️1
    27
    @highFreqSurfer #6 看你是哪一方,但不管哪一方都应该让利给另一方(避免让别人逼逼赖赖),自己吃亏,比如你是给钱的,进一,你是收钱的,抹掉
    flmn
    flmn
    May 15, 2024
    28
    BigDecimal 有现成的银行家舍入。
    highFreqSurfer
    highFreqSurfer
    OP
    May 20, 2024
    29
    @flmn 什么语言
    flmn
    flmn
    May 21, 2024
    30
    @highFreqSurfer Java 啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2177 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 156ms · UTC 12:46 · PVG 20:46 · LAX 04:46 · JFK 07:46
    ♥ Do have faith in what you're doing.