DECIMAL、NUMERIC 和 NUMBER数据类型
DECIMAL、NUMERIC 和 NUMBER数据类型
·
DECIMAL、NUMERIC 和 NUMBER数据类型
- 三者都是用于存储精确数值(即没有浮点数舍入误差)的数据类型。
- 它们都可以指定精度(总位数)和标度(小数位数)。
- 在存储时,如果小数部分超出指定标度,都会进行四舍五入;如果整数部分超出指定范围,都会报错。
参考链接:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT313
http://www.postgresql.org/docs/9.3/interactive/datatype-numeric.html#DATATYPE-NUMERIC-TABLE
在Oracle数据库中只有NUMBER,没有NUMERIC

NUMER
通用的数值类型,可以存储任意大小的数据,包括整数和小数。NUMBER 类型可以使用参数来指定精度和小数范围,例如 NUMBER(p,s),其中 p 表示总位数,s 表示小数位数。
NUMBER(p,s)
其中p,s都是可选的,都不填的话p默认为38,s默认为-84~127
- p:precision精度,总位数。默认情况下,精度为38位,取值范围是1~38之间。也可以用字符
*表示38。 - s:scale小数位,表示精确到多少位,指精确到小数点左边或右边多少位(±决定)
- 如果s>0,表示精确到小数点右边的位数。
- 如果s=0(默认值)
- 如果s<0,对数字取舍到小数点左边的指定位数。
精度(p)和小数位(s)遵循以下规则
- p<s表示存储的是没有整数的小数。
- 当一个数的整数部分的长度 > p-s 时,Oracle就会报错
- 当一个数的小数部分的长度 > s 时,Oracle就会舍入。
- 当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。
- 当s > p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)