数值函数

数值函数

    1.数值类型number(p,s)

        p表示有效位数, p的范围是1~38,默认值为38,p可以使用*来代替;

        s表示小数点后的位数,s的范围是-84~127 ,默认值取决于p,如果指定p,s的默认值为0,如果不指定p,s的默认值为127;

        number:浮点数,这里的p和s都没有进行指定,不能简单的理解为默认(我在实验number一共准确存储了40个9,当插入41个9的时候,不准确了)

create table temp_001(
  a number
);
--插入40个9的整数
insert into temp_001 values(9999999999999999999999999999999999999999);
--插入40个9的小数
insert into temp_001 values(0.9999999999999999999999999999999999999999);
insert into temp_001 values(99999999999999999999.99999999999999999999);
--插入41个9的整数
insert into temp_001 values(99999999999999999999999999999999999999999);
--插入41个9的小数
insert into temp_001 values(0.99999999999999999999999999999999999999999);
insert into temp_001 values(9.9999999999999999999999999999999999999999);
select * from temp_001;

(这里的数据纯属我个人的操作,我并没有找到理论支持)

        number(*,s):浮点数

        number(p):整数,相当于number(p,0)

        number(p,s):

            s>0 且 s<=p 时,整数部分的位数为p-s,小数部分的位数为s

            s>0 且 s>p时,整数部分为0,小数部分的位数为s位,且小数点右边至少有s-p个0的填充。

            s<0时,整数位数为p+|s|,小数点左边s位后用0填充

        (这里所说的位数是精确位数,多出来的位数四舍五入)

valuedatatype stored value
123.2564number123.2564
1234.9876number(6,2)1234.99
12345.12345number(6,2)12345.12
1234.9876number(6)1235
12345.345number(5,-2)12300
1234567number(5,-2)1234500
12345678number(5,-2)Error
123456789number(5,-4)123450000
1234567890number(5,-4)Error
12345.58number(*,1)12345.6
0.1number(4,5)Error
0.01234567number(4,5)0.01235
0.09999number(4,5)0.09999
0.099996number(4,5)Error

(里面发生错误的行有的是因为元数据超过了可以表示的范围,有的时因为进行了小数四舍五入后超过了可以表示的范围

参考网址:

http://www.blogjava.net/caojianhua/archive/2011/01/24/343461.html


        考虑到数据库的移植和兼容性,oracle还提供了其他的数值类型

        numberic(p,s) 相当于number(p,s)

        decimal(p,s)或者dec(p,s) 相当于number(p,s)

        Integer或者int相当于number(38)

        smallint相当于number(38)

        float相当于number

        double persicision 相当于 number

        real 相当于 real

    2.数值函数

        1)四舍五入函数:round(p,n)

        作用:对p1进行四舍五入,n为保留小数点的位数,默认为0

                n可不写(默认为0),也可为负数,表示保留到小数点前n位

--对3.14进行四舍五入,保留到整数位
select round(3.14) from dual;
--对3.14159进行四舍五入,保留到小数点后四位
select round(3.14159,4) from dual;
--对314159进行四舍五入,保留到小数点前3位
select round(314159,-3) from dual;

        2)取余函数:mod(m,n)

        作用:表示m对n进行除法,取余数

--计算100对3的余数
select mod(100,3) from dual;

        3)(向上/向下)取整函数:ceil(m)/floor(m)

        作用:ceil(m):取大于等于m的最小整数

                 floor(m):取小于等于m的最大整数

--分别对3.14和-3.14进行向上/向下取整
select ceil(3.14),floor(3.14),ceil(-3.14),floor(-3.14) from dual;







            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值