关于oracle的number类型的理解

 

oracle中数字类型有numbernumber可以存储小数的,如果是只想存储整数,建议

声明为:pls_integer 或者是binary_integer或者是integer

其中number类型的声明类型为number(精度,刻度),所谓精度我的理解就是从左侧第一个不为零的数字开始到开始四舍五入的位置的位数,刻度就是从小数点数几位开始进行四舍五入。刻度为正,表示小数点向后数,刻度为负,表示小数点向前数。

简单的举例来说:number32)。

这个数据类型的精度为3位,精确到小数点后面2位。

如果有个变量这样声明:n_test  number32):=6.335

那么oracle怎么判断这个类型的变量能否给赋这个值呢?总的来说是分三步进行的:

1.       根据刻度进行四舍五入:6.335——>6.34

2.       对上述值检查精度的位数为3

3.       检查结果不大于指定的精度,可以保存。

如果有个变量这样声明

n_test  number32):=63.355

那么oracle怎么判断这个类型的变量能否给赋这个值呢?还是分三步来进行:

1.       根据刻度进行四舍五入:63.35——>63.36

2.       对上述值检查精度的位数为4

3.       检查结果大于指定的精度,不可以保存,Oracle会提示错误。

  再举一个刻度为负的例子:number(3,-3)

这个数据类型表示精度为3位,精确到小数点前面3位。

如果有个变量这样声明:n_test number3-3):=30541;那么Oracle怎么判断这个类型的变量能否给赋这个值呢?还是三步:

1.       根据刻度进行四舍五入:30541——>31000

2.       对上述值检查精度为2

3.       根据精度判断小于指定的精度,Oracle不报错,能保存。

如果有个变量声明如下:n_test number(1,-2):=45698;那么Oracle怎么判断这个类型的变量能否给赋这个值呢?还是三步:

1.       根据刻度进行四舍五入:45698——>45700

2.       对上述检查精度为3

3.       根据精度检查大于指定的精度范围不能保存。

如果换成其他数字,依次类推。

    

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值