Oracle number类型的语法和用法

Oracle的NUMBER(p,s)数据类型用于存储定点数。s为负数时,对小数点左边的|s|位进行四舍五入,如number(5,-3)的1267.9会存储为1000。s为正数时,对小数点右边的|s|位进行四舍五入,如number(5,2)的123.456存储为123.46。精度p表示有效数位,s正时,小数点左边最多p-s位;s负时,最多p+|s|位。" 122778218,11809230,35岁程序员如何保持竞争力:技术提升与领导力,"['架构', '移动开发', 'android', '技术领导力', '职业发展']
摘要由CSDN通过智能技术生成

Oracle number类型的语法和用法

摘要:先根据精度值,对number类型的数据从左边第一个非零数字开始数精度值个位数,之后的位数截断不要(要四舍五入吗),再根据小数位置值,对number类型的数据右边的低位进行四舍五入(如果小数位置为负的,如何处理?)
 
      number类型的语法很简单,就是:
      number(p,s)
      p,s都是可选的,假如都不填,p默认为38,s默认为-48~127。
      1. 精度(precision),或总位数。默认情况下,精度为38位,取值范围是1~38之间。也可以用字符*表示38。
 
      2. 小数位置(scale)

当s(scale)为正数时,Oracle就对小数点右边的s个数字进行舍入。精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。
当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|

小数位数的合法值为-48~127,其默认值取决于是否指定了精度:
如果没有知道精度,则小数位数的取值默认可以落在最大的取值区间,即-48~127【Oracle 11g r2上,不只为127,但貌似小于140】上。
如果指定了精度,且指定了小数位数为n,则小数位数的取值可以落在取值区间0~n上。
如果指定了精度,而没有写出小数位数,则小数位数默认为0(小数点右边一位都没有)。
例如,定义为NUMBER的列会存储浮点数(有小数),而NUMBER(38)只存储整数数据(没有小数),因为在第二种情况下小数位数默认为0.
 注释:
1、

对于number(p,s)格式的数值,该数值中的哪些位数算为精度值位数呢?

回答该问题,首先我们要确定第|s|位数字为是哪一位?

当刻度s为负数时,Oracle就对小数点左边开始向前数的第|s|位数字是|s|位数字,并对该数字进行四舍五入。例如,对于数据类型为number(5,-3)的列,输入数值1267.9,则Oracle就会判断出数值1267.9的第|s|位数字为2,之后对该数字2进行四舍五入,由于2小于5,所以|s|位数字相邻左边一个数字1不变没有增一,而(四舍五入后)|s|位数字算起其右边的所有数字都置为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值