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

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

  •  
  •   highFreqSurfer · 2024-05-13 11:00:42 +08:00 · 3652 次点击
    这是一个创建于 418 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是直接扔掉还是四舍五入

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

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