• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MrdotX
V2EX  ›  程序员

有个金额数据加千分位是应该前端处理还是后端处理好?

  •  
  •   MrdotX · Aug 4, 2022 · 4997 views
    This topic created in 1559 days ago, the information mentioned may be changed or developed.

    今天开发遇到一个场景,前端页面里涉及金额的字段要增加千分位逗号,数据要做下处理,

    我的疑问是,这个处理应该前端来做还是后端来做?

    宝子们给点意见

    先说下我自己的看法,我是前端的,所以我偏向前端只做交互和渲染,不做数据处理,应该后端处理数据, 你们怎么看?

    Supplement 1  ·  Aug 4, 2022
    楼主遇到的场景是前端 H5 ,目前已经妥协进行前端处理了..

    此贴沉了,感谢各位的发言~
    49 replies  •  2022-08-08 22:52:42 +08:00
    vikaptain
    vikaptain
    Aug 4, 2022❤️16
    1
    前端处理。这不是数据处理问题,是数据显示问题
    abc0123xyz
    abc0123xyz
    Aug 4, 2022❤️1
    2
    只要不让我处理就好
    stoluoyu
    stoluoyu
    Aug 4, 2022❤️1
    3
    撕逼输了的处理
    lingxiaoli
    lingxiaoli
    Aug 4, 2022
    4
    当然是前端来处理了 1 楼说的对 这是显示问题
    ngrok111
    ngrok111
    Aug 4, 2022
    5
    前端,就像一楼说的这是显示问题,后端给纯数字你想怎么改都行
    cydysm
    cydysm
    Aug 4, 2022 via iPhone
    6
    就一个字段的话 前端
    当然后端可以给个展示用的字段
    MrdotX
    MrdotX
    OP
    Aug 4, 2022
    7
    @vikaptain
    @lingxiaoli
    @cydysm 那如果像是金额精度处理呢,应该前端还是后端处理?
    thinkershare
    thinkershare
    Aug 4, 2022
    8
    屁股决定脑袋, 当然是希望将所有工作对推给对方做.
    正常情况, 没有 BFF 肯定是所作都可以, 这个一个数据显示为什么样的样式, 更合理的当然是前端来做.
    laviris
    laviris
    Aug 4, 2022
    9
    无论从哪个角度看都是前端处理
    daimubai
    daimubai
    Aug 4, 2022
    10
    数据显示问题当然是前端改。和时间一样的。后端给前端时间戳,前端展示年月日也好,时分秒也好
    des
    des
    Aug 4, 2022 via iPhone
    11
    当然是前端处理,这有什么疑惑的?
    thinkershare
    thinkershare
    Aug 4, 2022❤️1
    12
    @MrdotX 金额进度当然是后端处理, 不过一般不会设计到精度, 因为我们总是使用比分还要小 2 个数量级的单位, 根本就不使用小数存储金额, 而是直接使用 long
    huiyadanli
    huiyadanli
    Aug 4, 2022
    13
    金额精度后端处理
    金额展示前端处理
    Cu635
    Cu635
    Aug 4, 2022
    15
    “我偏向前端只做交互和渲染,不做数据处理”

    说的对,千分位就是数据显示问题,可以说是“渲染”,而实际的数据完全是不涉及的,所以 lz 问题的回答就是“应该前端处理”。类似的还有小数点是用逗号还是圆点,小数部分是不是要缩小一个字号这种问题。
    lz 可以这么想一下:如果数据不再用逗号做千分位了,而是用空格,那么数据是不是就变化了?是不是 1 000!=1,000 ?
    lingxiaoli
    lingxiaoli
    Aug 4, 2022
    16
    @MrdotX #7 你说的精度是指分? 后端存的时候就是按分存的 给前端的时候前端按 ui 以及业务要求来做相应处理
    ecloud
    ecloud
    Aug 4, 2022
    17
    @Cu635 德国的小数点跟逗号就是反着用的,这本质上叫做 localization
    Jooooooooo
    Jooooooooo
    Aug 4, 2022
    18
    后端做的好处是, 能更灵活的去调整这个展示的样式.

    前端只单纯展示一个字符串.
    damai0419
    damai0419
    Aug 4, 2022
    19
    这种偏向前端处理。
    像金额类的,后端基本要保存为币种的最小单位。
    这串数字反给前端,前端怎么展示,很可能不同的终端不一样。¥ 1 ,000 ;一千元;壹仟元; 1000 元 等等的。
    ecloud
    ecloud
    Aug 4, 2022
    20
    @MrdotX 精度问题,最好让后端改成用 long 存储,然后再给你返回一个 point (小数位)。比如 (1234567|point=3) => 1234.567 (分隔符取决于 locale )
    wangtian2020
    wangtian2020
    Aug 4, 2022
    21
    后端提供原始数据,前端负责格式化显示
    如果仅做一处数据的显示,也能后端提供
    Routeros
    Routeros
    Aug 4, 2022
    22
    我赞成前端做
    MrdotX
    MrdotX
    OP
    Aug 4, 2022
    23
    Fine.. 领导说要前端做。。
    MrdotX
    MrdotX
    OP
    Aug 4, 2022
    24
    沉了沉了
    GeorgeGalway
    GeorgeGalway
    Aug 4, 2022❤️3
    25
    我们前端是个美丽的小姐姐,所以当然是我大后端处理
    lllllliiii
    lllllliiii
    Aug 4, 2022
    26
    @Jooooooooo #18

    `后端做的好处是,能更灵活的去调整这个展示的样式`

    不是应该是前端做,才更灵活吗?后端都直接把需要渲染好的数据返回了,怎么会是灵活的?
    fkmc
    fkmc
    Aug 4, 2022
    27
    如果是美丽小姐姐,那就我来
    fkmc
    fkmc
    Aug 4, 2022
    28
    前端修改比较合适,毕竟只是格式处理
    Jooooooooo
    Jooooooooo
    Aug 4, 2022
    29
    @fzdwx 如果是客户端, 你还得发版等着用户去用户商店更新才能生效. 咋会更灵活.
    lllllliiii
    lllllliiii
    Aug 4, 2022
    30
    @Jooooooooo

    客户端这种场景,我确实接触的比较少。。。
    fkdtz
    fkdtz
    Aug 4, 2022
    31
    OP 身为一名前端,此时正在处理
    28Sv0ngQfIE7Yloe
    28Sv0ngQfIE7Yloe
    Aug 4, 2022
    32
    @Jooooooooo #18

    现在前端格式化库我觉得比后端灵活多了吧
    otakustay
    otakustay
    Aug 4, 2022
    33
    金额加逗号显然是渲染的事,你作为前端就算只做交互和渲染,也应该把这事做了
    Jooooooooo
    Jooooooooo
    Aug 4, 2022
    34
    @Morii 我说的灵活是指更新的灵活, 不是实现上的灵活, 具体的逻辑看下 29l
    28Sv0ngQfIE7Yloe
    28Sv0ngQfIE7Yloe
    Aug 4, 2022
    35
    @Jooooooooo #34

    soga ,我一直考虑的是 web 端,如果是客户端的话,我赞同
    arch9999
    arch9999
    Aug 4, 2022
    36
    @Morii

    什么端,这个都是前端做。
    hayvane
    hayvane
    Aug 4, 2022
    37
    前端处理,另外 [我偏向前端只做交互和渲染,不做数据处理] ,其实,在实际工作中,有时候前端也是要做数据处理的
    我也是前端( app+小程序)
    yaphets666
    yaphets666
    Aug 4, 2022
    38
    写个处理函数就行,咱是按天算钱的,不计件,多干点活没事,只要不加班就行.
    cnoder
    cnoder
    Aug 4, 2022
    39
    理论上输入和输出格式要一致,你觉得你给后端金额的时候会传 100,454.21 这种数据吗
    fernandoxu
    fernandoxu
    Aug 4, 2022
    40
    Intl.NumberFormat
    janda
    janda
    Aug 4, 2022
    41
    金额计算 - 后端
    金额显示 - 前端
    h1104350235
    h1104350235
    Aug 4, 2022
    42
    显示问题,一般是前端处理。
    像这个数据结构的话,我一般会抽出个方法处理。
    phobal
    phobal
    Aug 4, 2022 via iPhone
    43
    一行代码的事儿 Number.prototype.toLocaleString()
    adjusted
    adjusted
    Aug 4, 2022
    44
    后端,前端多个平台所有人都得改一遍
    zjuster
    zjuster
    Aug 4, 2022
    46
    前端处理。
    用实际例子说一下,德国等国家的的千分号单位是“.”或者空格,小数是“,”。
    德国 123 456 479, 00 或者 123.456.789,00
    我国 123,456,789.00
    为了适应当地的习惯和策略,前端展示上不同,但对账的时候的数值大小是一致的。

    所以前端做展示,后端提供统一的财务数据比较合适。
    zhuweiyou
    zhuweiyou
    Aug 4, 2022
    47
    前端处理,因为金额可能会做计算,比如*数量=总价,你后端返回带逗号的,你怎么做计算?
    godblessumilk
    godblessumilk
    Aug 5, 2022
    48
    必须是前端处理。因为你的系统以后可能会拓展到全世界,到时候有的用户用美元、有的用户用欧元做单位,你让后端全给你算一次吗?还有,关于时间的显示,一律让后端只返回时间戳,不可以返回处理好了格式的日期,因为你永远不知道你的前端用户在哪个时区
    Cu635
    Cu635
    Aug 8, 2022
    49
    @ecloud #17
    说的对对,只不过我个人很不喜欢这种不统一又没有实际意义的人为差别,所以宁可跟着 lz 用“渲染”这个关键字。

    @GeorgeGalway #25
    既然是美丽的小姐姐是前端,不更应该让前端处理么,遇到问题了可以上去交流啊。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2485 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 87ms · UTC 12:06 · PVG 20:06 · LAX 04:06 · JFK 07:06
    ♥ Do have faith in what you're doing.