此网站为绿茶加糖资料站
当前位置:绿茶加糖 > 电脑基础 > 正文

ROUND函数:四舍五入

04-21 电脑基础

ROUND(x) 函数返回最接近于参数 x 的整数;ROUND(x,y) 函数对参数x进行四舍五入的操作,返回值保留小数点后面指定的y位。

【实例 1】使用ROUND(x)函数,输入 SQL 语句执行结果如下。

mysql> SELECT ROUND(-6.6),ROUND(-8.44),ROUND(3.44);
+-------------+--------------+-------------+
| ROUND(-6.6) | ROUND(-8.44) | ROUND(3.44) |
+-------------+--------------+-------------+
|          -7 |           -8 |           3 |
+-------------+--------------+-------------+
1 row in set (0.00 sec)

从执行结果可以看出,ROUND(x)函数将值x四舍五入之后保留了整数部分。

【实例 2】使用ROUND(x,y)函数,输入 SQL 语句执行结果如下。

mysql> SELECT ROUND(-6.66,1),ROUND(3.33,3),ROUND(88.66,-1),ROUND(88.46,-2);
+----------------+---------------+-----------------+-----------------+
| ROUND(-6.66,1) | ROUND(3.33,3) | ROUND(88.66,-1) | ROUND(88.46,-2) |
+----------------+---------------+-----------------+-----------------+
|           -6.7 |         3.330 |              90 |             100 |
+----------------+---------------+-----------------+-----------------+
1 row in set (0.00 sec)

从执行结果可以看出,根据参数y值,将参数x四舍五入后得到保留小数点后y位的值,x值的小数位不够y位的补零;如果y为负值,则保留小数点左边y位,先进行四舍五入操作,再将相应的位数值取零。

1.对数值的操作

语法
round(number,digits)
参数
number,要四舍五入的数,digits是要小数点后保留的位数
如果 digits 大于 0,则四舍五入到指定的小数位。
如果 digits 等于 0,则四舍五入到最接近的整数。
如果 digits 小于 0,则在小数点左侧进行四舍五入。
如果round函数只有参数number,等同于digits 等于 0。
返回值
四舍五入后的值
举例
round(3.1415926,2)=3.14;
round(3.1415926,3)=3.142;
select round(193,-2)from dual; 200
select round(193,-1)from dual;190
select round(193,-3)from dual;0
出错处理
Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。可是当保留位跟着的即使是5,有可能进位,也有可能舍去,机会各50%。这样就会造成在应用程序中计算有误。下面这个函数能真正实现四舍五入功能,用以取代Round函数。
Public Function Round ToLarger(dblInputAsDouble,intDecimalsAsInteger) As Double
'执行Round()函数,有可能进位
'也有可能舍去
Dimstr Format String As String'格式化字符串’
如果是“0”,则返回“0”,否则进行适当的格式化:
If dblInput <>0 Then
strFormatString="#."&String(intDecimals,"#")
Round ToLarger=Format(dblInput,strFormatString)
Else
Round ToLarger=0
End If
End Function;

2.对日期的操作

1.对于年份按1--6月和7--12月四舍五入到最近的年份1月;
select round(to_date('2018-08-05','yyyy-mm-dd'),'yyyy') from dual;
2.对于月份按1--15日和16--30日四舍五入到最近的月份1日;
select round(to_date('2018-08-08','yyyy-mm-dd'),'month') from dual;
3.对于星期按周一--周三和周四--周日四舍五入到最近一周周日;
select round(to_date('2018-08-08','yyyy-mm-dd'),'day') from dual;
3.对于天按1--12点和13--24点四舍五入到最近一天零时;
select round(to_date('2018-08-05','yyyy-mm-dd'),'dd') from dual;

版权保护: 本文由 绿茶加糖 原创,转载请保留链接: https://www.guobaosheng.com/computer/35.html