跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 我有个一个保留 2 位小数的浮点数需要保存, 我是把它乘以 100,按照 int 存,还是按照 decimal(4,2)来存?
未分類
24 9 月 2020

我有个一个保留 2 位小数的浮点数需要保存, 我是把它乘以 100,按照 int 存,还是按照 decimal(4,2)来存?

我有个一个保留 2 位小数的浮点数需要保存, 我是把它乘以 100,按照 int 存,还是按照 decimal(4,2)来存?

資深大佬 : hackingwu 2

我有一个字段要保留 2 位小数,我是按照 decimal(4,2)来存,还是乘以 100,按照 int 来存,返回给使用者的时候在做个转换。目的是 decimal(4,2)占了 8bytes,int 才 4bytes, 我这个表有 10 来个 decimal 的字段。

大佬有話說 (26)

  • 資深大佬 : opengps

    其实,对于你的数据规模来讲,未必需要在乎这 2 个字节的节省
    建议你先评估下数据规模有多大,是否真的需要省空间,然后才考虑是否可以用 cpu 换硬盘

  • 資深大佬 : opengps

    换句话说,硬盘比 CPU 便宜,一般推荐存储上选用最方便的数据结构。
    你硬盘紧张就把表设计的紧凑点,CPU 紧张就尽量少做运算

  • 資深大佬 : wangritian

    我是乘以 100 存整数了,感觉做统计计算时比浮点数速度会快一点

  • 資深大佬 : coderluan

    你不说具体场景和目的, 那就是都行.

  • 資深大佬 : securityCoding

    int/long , 来自互金公司的经验

  • 資深大佬 : redtea

    起码乘 10000,否则哪天改成保留 4 位,那就太麻烦了。

  • 資深大佬 : la2la

    @redtea 哈哈,真实

  • 資深大佬 : wysnylc

    你猜 decimal 为什么要被发明出来?

  • 資深大佬 : keepeye

    涉及到钱的最好存整数

  • 資深大佬 : zpfhbyx

    @securityCoding 同来自前互金公司的经验 decimal 18,6 bcmath 处理

  • 資深大佬 : IvanLi127

    哪天换算错了就完了,还是存 decimal 吧

  • 資深大佬 : mxT52CRuqR6o5

    要看具体业务的

  • 資深大佬 : xuanbg

    decimal 就是干这个的

  • 資深大佬 : May725

    考虑具体业务、预估数据规模、以及将来可能的需求变化,综合考虑吧

  • 資深大佬 : reus

    用 decimal 不需要记得换算,不记得换算的话,可能会有百倍的损失。
    当然选 decimal,存储很贵吗?你省下的存储,都变成了潜在的风险,有代价的。

  • 資深大佬 : KarlChen2015

    显然选择 decimal
    如果一个新人不知道✖️100 的设计,后果不堪设想

  • 資深大佬 : winglight2016

    @KarlChen2015 我想起之前在 v2 上就有个实习生发了一个帖子说自己计算汇率忘记这个*100 的操作,给公司造成了上千万的损失。。。

  • 資深大佬 : InkStone

    不需要极限压榨性能和存储的话,肯定是怎么直观怎么来,不要添加额外的思维负担

  • 資深大佬 : daozhihun

    曾经做过的某负责处理钱的模块都是存的 decimal 。当然存 long/int 也可以(建议乘以 10000 或者 1000000 ),可以提升一点性能,但个人认为现在的处理能力不用考虑那点性能,个人还是偏好 decimal

  • 資深大佬 : Chappako

    @zpfhbyx #10 同 decimal + bcmath 处理

  • 資深大佬 : cedoo22

    不管什么场景, 直接按类型存吧。
    decimal 发明出来 不就是为了处理浮点数的?

  • 資深大佬 : Veneris

    以微信和美团的数据结构看,都是以分做单位。

  • 資深大佬 : newmlp

    建议 decimal,int 容易出 bug,到处都要换算,万一哪里忘了找起来也麻烦

  • 資深大佬 : liprais

    跟钱有关的不用 decimal 是真的心大

  • 資深大佬 : lululau

    int*100 是空间和时间兼得吧,缺点是需要自己换算倍数关系,但是从运行效率上讲,int*100 应该比 bigdecimal 快吧

  • 資深大佬 : sheeta

    看看腾讯,支付宝它们是怎么做的不就行了呗

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具