金额的存储用 long 可以吗

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

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

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

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

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

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

© 2021 V2EX