金额的存储用 long 可以吗

2019-05-30 14:48:17 +08:00
 wisetc
想将金额的数值乘以 1000 然后再存库,方便数据的存储。让前端提交给后端的数据都先乘以 1000,然后后端返回给前端的金额数据是放大了 1000 倍的,显示的时候再让前端处理,除以 1000,后台不用对金额做任何处理,哈哈哈。我真是越来越佩服我自己。
各位后端大佬,怎么看。
8864 次点击
所在节点    数据库
81 条回复
shihty5
2019-05-30 17:10:06 +08:00
BigDecimal
whypool
2019-05-30 17:12:00 +08:00
用整数,存分或者厘
Caballarii
2019-05-30 17:12:10 +08:00
上面说存成分的都是没做过利率计算的吧
indingpig
2019-05-30 17:27:56 +08:00
计算的话还是交给后台计算吧,前端计算精度有可能出问题的。比如长度超过 17 位的数,精度就开始丢失,前端最大和最小的安全整数是正负 2 的 53 次方-1
tonghuashuai
2019-05-30 19:08:06 +08:00
Decimal
julyclyde
2019-05-30 19:10:42 +08:00
老老实实用 currency 类型,别找事
qiyuey
2019-05-30 19:15:06 +08:00
一般是用分
shm7
2019-05-30 19:17:22 +08:00
一看就不知道有个 format 叫 bank format (小数点后两位),后面的就可以拿来 tanwu 了
SingeeKing
2019-05-30 19:27:07 +08:00
为什么是 1000 而不是 100 …… 微信支付就是以分为单位的
RangerWolf
2019-05-30 19:27:51 +08:00
谷歌广告的数据就是这么干的~ 你说可以么?

但是直接用 decimal 个人觉得也不错
ETiV
2019-05-30 19:29:20 +08:00
LZ 好厉害,我都要佩服 LZ
passerbytiny
2019-05-30 19:36:22 +08:00
@SingeeKing #27 以前虽然现金只到分,但算账的时候要算到厘。严格意义上说,微信支付是有问题的,因为现在现金是只到角的,分、厘都只能用于计算,不能用于最后的支付。
lithiumii
2019-05-30 19:54:53 +08:00
反正我司用的 float,偶尔出现一些奇幻情况,我都惊了
JerryCha
2019-05-30 20:48:48 +08:00
我用 String (逃
troywinter
2019-05-30 22:37:39 +08:00
#3 是正解,用整型存储最后处理时除以 100 是常识操作,不应该用其它方式,至于出错的问题 ddd 完全可以解决。
IceBay
2019-05-30 22:40:20 +08:00
就用 decimal,计算用高精度函数。
ccming
2019-05-30 22:42:40 +08:00
@troywinter 汇率怎么处理
dosmlp
2019-05-30 23:32:55 +08:00
@lithiumii 用 float 也是牛鼻,float 各种运算精度更差
limuyan44
2019-05-30 23:44:49 +08:00
真不怕无中丢钱,无中生钱?
lithiumii
2019-05-30 23:47:13 +08:00
@dosmlp 是啊,我看到都吐血了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/569119

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX