V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
highFreqSurfer
V2EX  ›  问与答

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

  •  
  •   highFreqSurfer · 32 天前 · 2986 次点击
    这是一个创建于 32 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是直接扔掉还是四舍五入

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

    在当时,做项目时,没有任何人表态,我就按四舍五入的做了。结果所有人都给我一个鄙视的眼神。还和那个同事闹得挺不愉快,你舍掉分后的部分也不说下,立项时也没人反对,对不上数了,一堆事后诸葛亮出来说话。
    lisxour
        27
    lisxour  
       31 天前   ❤️ 1
    @highFreqSurfer #6 看你是哪一方,但不管哪一方都应该让利给另一方(避免让别人逼逼赖赖),自己吃亏,比如你是给钱的,进一,你是收钱的,抹掉
    flmn
        28
    flmn  
       30 天前
    BigDecimal 有现成的银行家舍入。
    highFreqSurfer
        29
    highFreqSurfer  
    OP
       24 天前
    @flmn 什么语言
    flmn
        30
    flmn  
       24 天前
    @highFreqSurfer Java 啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5354 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 03:25 · PVG 11:25 · LAX 20:25 · JFK 23:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.