作者:iamlaosong
oracle涉及到取整的函数主要有4个,两个单参数的(ceil和floor),两个双参数的(trunc和round)。双参数不仅可以取整,也可以取到任一位小数,甚至可以取到任一位整数。这些函数参数为正数时比较好理解,为负数时就要好好想一想了,不要用错了,好在用于负数的机会不多。
1、ceil(n)取整(大),取比真值大的最小整数,注意正负数的取值:
如ceil(251.0001)=252,ceil(-251.0001)=-251,ceil(-251.9999)=-251;
select ceil(251.0000001) from dual;
结果:252
2、floor(n)取整(小),取比真值小的最大整数,注意正负数的取值:
如floor(251.9999)=251,floor(-251.9999)=-252,floor(-251.0001)=-252;
这两个函数功能正好相反。
3、trunc(n,p)取指定位置部分(截取),p指定截取数值的位置,p为0时表示截取整数部分,可以或略:
如trunc(251.0001)=251,trunc(-251.0001)=-251,trunc(-251.9999)=-251;
当p为正数时,表示截取时保留小数的位数;当p为负数时,表示截取时保留整数的位置,例如:
trunc(251.1234,2)=251.12,trunc(251.1234,-2)=200,trunc(251.1234,-1)=250;
4、round(n,p)取指定位置部分(四舍五入),同trunc类似,p指定截取数值的位置,p为0时表示截取整数部分,可以或略:
round(251.34)=251,round(251.56)=252,round(-251.34)=-251,round(-251.56)=-252;
当p为正数时,表示截取时保留小数的位数;当p为负数时,表示截取时保留整数的位置,例如:
round(251.1234,2)=251.12,round(251.1234,-2)=300,round(251.1234,-1)=250;
四舍五入时只考虑绝对值,不用关心正还是负。
下面是四个函数的取整案例:
select trunc(-251.75),round(-251.75),floor(-251.000001),ceil(-251.000001) from dual;
结果:-251,-252,-252,-251