V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhuwd
V2EX  ›  程序员

大家平常都是以什么类型存储货币类型的数据?

  •  
  •   zhuwd · 2020-01-02 14:35:37 +08:00 · 6019 次点击
    这是一个创建于 1788 天前的主题,其中的信息可能已经有所发展或是发生改变。
    39 条回复    2020-01-03 16:18:10 +08:00
    Liutos
        1
    Liutos  
       2020-01-02 14:39:11 +08:00
    用整型,以分为单位存储
    hzgit
        2
    hzgit  
       2020-01-02 14:49:48 +08:00
    用整型,以分为单位存储
    pota
        3
    pota  
       2020-01-02 14:50:17 +08:00
    用整型,以分为单位存储
    qiayue
        4
    qiayue  
       2020-01-02 14:50:42 +08:00
    最近的一个项目,分都不够,所以直接乘以 10000,用十分之一厘为单位
    l00t
        5
    l00t  
       2020-01-02 14:50:59 +08:00
    double 或者 decimal, 看心情。
    vhysug01
        6
    vhysug01  
       2020-01-02 14:56:54 +08:00
    decimal 12,6 😏
    play78
        7
    play78  
       2020-01-02 14:58:07 +08:00
    最近项目,java 然后用 bigdeciaml , 单价是精确到 0.0001, 订单结算是精确到 0.01
    然后遇到很多四舍五入的问题。java 和 js 默认是银行家舍入算法。要改一下传统意义上的四舍五入。
    lc7029
        8
    lc7029  
       2020-01-02 14:58:11 +08:00
    varchar
    xuanbg
        9
    xuanbg  
       2020-01-02 15:00:51 +08:00
    金额用 decimal(18,2),单价用 decimal(18,6)
    aliipay
        10
    aliipay  
       2020-01-02 15:08:54 +08:00
    @qiayue 以前看别人用分,我自己用万分之 1 元,很长一段时间自以为绝对够用了,直到用了区块链,才发现错了
    IMCA1024
        11
    IMCA1024  
       2020-01-02 15:15:09 +08:00
    decimal
    商城那边小数保留到 2 位, 财务那边因为涉及到税率 用到 4 位后的都有

    不过最近新的要求用 分
    richangfan
        12
    richangfan  
       2020-01-02 15:17:26 +08:00 via Android
    decimal,方便,没高精度要求
    wangyzj
        13
    wangyzj  
       2020-01-02 16:35:06 +08:00
    decimal 9,2
    jowan
        14
    jowan  
       2020-01-02 16:38:43 +08:00
    decimal 16,2
    matepi
        15
    matepi  
       2020-01-02 16:50:13 +08:00
    用整型,另加币种类型字段,按币种类型决定如何定小数点与精度
    diyazhu
        16
    diyazhu  
       2020-01-02 17:09:47 +08:00
    Long, 10^-6 元作为单位
    allanzhuo
        17
    allanzhuo  
       2020-01-02 19:16:37 +08:00
    用啥都可以,但是用 double 的要打死
    BlueSky335
        18
    BlueSky335  
       2020-01-02 19:34:24 +08:00
    用浮点型的大都是计算机基础不过关的
    cigarzh
        19
    cigarzh  
       2020-01-02 19:35:48 +08:00
    bigdeciaml
    realpg
        20
    realpg  
       2020-01-02 19:59:50 +08:00
    bigint 金融类乘以十万 日常类乘以 100
    daozhihun
        21
    daozhihun  
       2020-01-02 20:18:59 +08:00 via Android
    bigdecimal,不要只保留两位小数
    jeffh
        22
    jeffh  
       2020-01-02 20:38:46 +08:00 via Android
    int 够了吧最大 20 亿,千万不能用浮点数,可以认为浮点数是数轴上一串离散的点,不能表示所有数字
    qwerthhusn
        23
    qwerthhusn  
       2020-01-02 20:57:30 +08:00
    @jeffh decimal 也是一串离散的点,不能表示所有数字
    guanhui07
        24
    guanhui07  
       2020-01-02 20:59:16 +08:00
    decimal
    pipapa
        25
    pipapa  
       2020-01-02 20:59:38 +08:00
    用整型,以分 satoshi 为单位存储
    Kmmoonlight
        26
    Kmmoonlight  
       2020-01-02 21:21:27 +08:00 via iPhone
    数字货币从业者 😭
    wang247
        27
    wang247  
       2020-01-02 21:33:26 +08:00
    decimal
    Jafee
        28
    Jafee  
       2020-01-02 21:42:11 +08:00
    考察下 Joda Money ?
    sockball07
        29
    sockball07  
       2020-01-02 21:57:33 +08:00
    @realpg 乘以十万的话 实际最大的数字达到了多少呢
    realpg
        30
    realpg  
       2020-01-02 22:04:21 +08:00
    @sockball07 #29
    发出去后我才发现其实我写错了 是乘以一百万
    我的记忆是六位小数,习惯性想起六位数是十万就发出去了

    金融类系统有标准的 就是这个精度。
    mondeo
        31
    mondeo  
       2020-01-02 22:08:37 +08:00 via Android
    金融类的不能用浮点
    sockball07
        32
    sockball07  
       2020-01-02 22:11:53 +08:00
    @realpg #30 我想知道的是乘完以后数据库存储的数字最大达到了多少😂...
    mingqing
        33
    mingqing  
       2020-01-02 22:16:03 +08:00
    浮点数会有误差
    realpg
        34
    realpg  
       2020-01-02 23:41:26 +08:00
    @sockball07 #32
    没多大啊 也不关心数据多大
    反正我们设计的金额不会上十亿 远低于 bigint 容量
    jry
        35
    jry  
       2020-01-02 23:47:10 +08:00 via iPhone
    @Kmmoonlight 数字货币很蛋疼用什么存储呢?
    KentY
        36
    KentY  
       2020-01-03 00:54:25 +08:00 via iPhone
    可以问问越南,荷兰,哪怕日本的开发者。😁
    szuwl
        37
    szuwl  
       2020-01-03 08:31:58 +08:00 via Android
    money 类型
    wind98
        38
    wind98  
       2020-01-03 13:51:02 +08:00
    bigInt(20)
    单位分
    Kmmoonlight
        39
    Kmmoonlight  
       2020-01-03 16:18:10 +08:00
    @jry 不同交易所的保留位数不一样的 有的整数,有的小数后面八位 , 根据不同的位数 BigDecimal setScale
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3971 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:15 · PVG 12:15 · LAX 20:15 · JFK 23:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.