1
BreezeInWind 2020-04-17 14:55:22 +08:00
价格存的可能比如 ¥123,234,45.00 这种类型?
|
2
libook 2020-04-17 14:56:04 +08:00 via Android
为了避免浮点型数据精度误差,比如 0.1+0.2≠0.3 的问题。
很多数据库和语言上都有十进制数据类型大多是基于字符串实现的数学计算,比原生数值类型计算慢很多,但能保证精度。 当然还有用整型的,然后以分为单位,比如 1 元钱记为 100,不过遇到除法可能还是有精度不足的问题。 |
3
qiayue 2020-04-17 14:57:52 +08:00
要具体情况具体分析,举例我们行业特殊,价格到厘,所以价格乘以 10000 存 int,然后发现最多只能存 21 万,最后又换成 bigint 了。
|
4
yukiloh 2020-04-17 15:00:08 +08:00 via Android
长见识了,我只遇到分做单位的场景,还有厘…
|
5
Vegetable 2020-04-17 15:05:29 +08:00
1. 计算机浮点数误差,0.6000000000000001 这种见过吧
2. 传统的‘数’是由上限的,可能会溢出 所以常常通过转成字符串来处理,这就是 Decimal 这个类型做的事情。 |
6
azcvcza 2020-04-17 15:19:12 +08:00
计算机浮点数计算不精确
|
7
fumichael 2020-04-17 15:28:53 +08:00 1
|
8
TimLang 2020-04-17 15:30:15 +08:00
有些后台用的是 big decimal, 在 json 里面返回可能被格式化成了 string 。
|
9
conn4575 2020-04-17 19:00:16 +08:00 via Android
实际上标准做法就是使用字符串。。。
|
10
Pythondr 2020-04-17 23:19:19 +08:00 via iPhone
是的,避免精度丢失
|