数值函数

数值函数

    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;

数值函数_第1张图片

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

        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填充

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

value datatype  stored value
123.2564 number 123.2564
1234.9876 number(6,2) 1234.99
12345.12345 number(6,2) 12345.12
1234.9876 number(6) 1235
12345.345 number(5,-2) 12300
1234567 number(5,-2) 1234500
12345678 number(5,-2) Error
123456789 number(5,-4) 123450000
1234567890 number(5,-4) Error
12345.58 number(*,1) 12345.6
0.1 number(4,5) Error
0.01234567 number(4,5) 0.01235
0.09999 number(4,5) 0.09999
0.099996 number(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;







            

你可能感兴趣的:(数据库基础知识)