sql05除法进位取整问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql05除法进位取整问题相关的知识,希望对你有一定的参考价值。
select count(1)/20,count(1) from Articles
返回结果是818
实际上我想获取的是记录的数量/20后进位取整 16363/818=818.15
我想获取819该怎么办
目测, 我估计你这个 sql 。
是查询。 表里面有多少页 (每页20行), 以及多少行 的 sql 语句。
下面是一个例子代码, 我就不 count(1) 了。 你用 count(1) 替换掉那个 16363
2> select
3> 16363/20 AS [你原有的],
4> CEILING(16363/20.0) AS [修改以后的]
5> go
你原有的 修改以后的
----------- --------------
818 819
(1 行受影响) 参考技术A 这个用round函数可以取整,进入四舍五入
declare @a decimal
declare @b decimal
declare @c int
select @a=16390,@b=20,@c=0
select round((@a/@b),0)
不加round函数结果是:819.5
加了round函数的结果变成:820 函数对结果进了四舍五入操作 参考技术B select floor(count(1)/20),count(1) from Articles;
php中除法取整的方法(round,ceil,floor)
PHP中遇到需要将除法所得结果取整的情况时,就需要用到以下方法:
1. round:四舍五入
round() 函数对浮点数进行四舍五入。
语法:round(x, prec)
参数 | 描述 |
x | 可选。规定要舍入的数字。 |
prec | 可选。规定小数点后的位数。 |
说明:返回将 x 根据指定精度 prec (十进制小数点后数字的数目)进行四舍五入的结果。prec 也可以是负数或零(默认值)。
提示:PHP 默认不能正确处理类似 "12,300.2" 的字符串。
例:
1 <?php
2 echo(round(0.60));
3 echo(round(0.50));
4 echo(round(0.49));
5 echo(round(-4.40));
6 echo(round(-4.60));
7 ?>
输出:
1 1
2 1
3 0
4 -4
5 -5
2. ceil:向上取整
ceil() 函数向上舍入为最接近的整数。
语法:ceil(x)
参数 | 描述 |
x | 必须。规定要舍入的数字。 |
说明:返回不小于 x 的下一个整数,x 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
例:
1 <?php
2 echo(ceil(0.60);
3 echo(ceil(0.40);
4 echo(ceil(5);
5 echo(ceil(5.1);
6 echo(ceil(-5.1);
7 echo(ceil(-5.9));
8 ?>
输出:
1 1
2 1
3 5
4 6
5 -5
6 -5
3. floor:向下取整
floor() 函数向下舍入为最接近的整数。
语法:floor(x)
参数 | 描述 |
x | 必须。规定要舍入的数字。 |
说明:返回不大于 x 的下一个整数,将 x 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
例:
1 <?php
2 echo(floor(0.60));
3 echo(floor(0.40));
4 echo(floor(5));
5 echo(floor(5.1));
6 echo(floor(-5.1));
7 echo(floor(-5.9))
8 ?>
输出:
1 0
2 0
3 5
4 5
5 -6
6 -6
以上是关于sql05除法进位取整问题的主要内容,如果未能解决你的问题,请参考以下文章