标签:10 常用 存储 数据库 小数点 NUMBER Oracle 位数 设计规范
【强制】 任何货币金额,均以最小货币单位且整型类型来进行存储
decimal
存储小数,必须使用 decimal, 不要用 float 和 double等其他类型,否则可能会出现精度丢失
在 decimal (M,N) 中
- M 表示有效数字数的位数。(注意不是整数的位数,例如 -123.45 中 M=5 而不是3)
- N 表示小数点后的位数
- 整数的位数为 M-N
- 存储占用 M+2 bit,因为要包含正负号和小数点
bigint
- 取值范围 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807),可以表示正负十亿亿级别的数值
- 储存空间 64 bit
Oracle 数据库内置的数据类型
NUMBER
数字类型,可以指定它的精度和小数位数。
格式 NUMBER (precision, scale)
- precision 表示有效数字的位数(注意不是整数的位数),最大38
- scale 表示小数位数
INTEGER
整型类型,小数位数为 0,INTEGER 属于 NUMBER 的子类型,相当于 NUMBER (P,0)
金融类字段
金额类字段
根据阿里巴巴 java 开发规范,“任何货币金额,均以最小货币单位且整型类型来进行存储”,因此要使用长整形
- Mysql : 建议 bigint 以分为最小单位存储时,最大可以表示正负千万亿级别的金额
- Oracle : 建议 INTEGER 小数保留到分,整数 16 位,最大可以表示千万亿级别的金额
利率类字段
根据行业习惯,存储时,利率保留到小数点后6位,展示时,利率只展示到小数点后4位
- Mysql : 建议 DECIMAL (10,6) ,小数点后保留 6 位,整数 4 位,
- Oracle : 建议 NUMBER (10,6) ,小数点后保留 6 位,整数 4 位,
坐标类字段
二位坐标-经纬度
推荐做法
经度
- Mysql : DECIMAL (11,8)
- Oracle : NUMBER (11,8)
维度
- Mysql : DECIMAL (10,8)
- Oracle : NUMBER (10,8)
经度取值范围为 [0,180],纬度的取值范围为 [0,90],因此经度比纬度是要多存一位
转载自:https://juejin.cn/post/6889233095417921549
标签:10,常用,存储,数据库,小数点,NUMBER,Oracle,位数,设计规范 来源: https://www.cnblogs.com/masterlintop/p/15782103.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。