SQL 中详解round(),floor(),ceiling()函数的用法和区别?
来源:互联网 发布:网络大型策略游戏 编辑:程序博客网 时间:2024/06/05 03:40
Examda提示:如果不理解基本的数据类型和四舍五入函数,那么你就可能误解四舍五入。由于数据类型的差异(比如integer,float, decimal等等),四舍五入后的值可能会不同。另外,由于在计算中使用的SQL Server舍入函数(ROUND(),CEILING(),FLOOR())的差异,得到的结果值也可能会不同。因此,找到用户对四舍五入的要求接着把这些要求转化到适当的T-SQL命令中是很重要的。
让我们先从定义的角度开始:
ROUND() – 四舍五入一个正数或者负数,结果为一定长度的值。
CEILING() - 返回最小的整数,使这个整数大于或等于指定数的数值运算。
FLOOR() - 返回最大整数,使这个整数小于或等于指定数的数值运算。
让我们来看看有不同数据类型的函数的结果。
ROUND(),CEILING()和FLOOR()例子
例子
值
在这个例子中,你可以看到,在一个正整数的情况下,这三个舍入函数返回相同的值。
DECLARE @value int
SET @value = 6
SELECT ROUND(@value, 1) 6
SELECT CEILING(@value) 6
SELECT FLOOR(@value) 6
在第二个例子中,即使在一个负整数的情况下,这三个舍入函数还是返回相同的值。
DECLARE @value int
SET @value = -11
SELECT ROUND(@value, 1) -11
SELECT CEILING(@value) -11
SELECT FLOOR(@value) -11
要证明整数这个观点,四舍五入是不可能的。让我们来看看一些其他的数据类型。
DECLARE @value int
SET @value = -11.5
SELECT ROUND(@value, 2) -11
SELECT CEILING(@value) -11
SELECT FLOOR(@value) -11
在我们的例子中,用一个小数数据类型和不同长度参数(比如1,2或者3)的舍入函数会产生不同的终值。当四舍五入这个值并且长度参数是1时,小数点后第二位的5是有意义的。另外,在小数数据类型中,CEILING和 FLOOR函数也会考虑小数位,因为会得到不同的值。
DECLARE @value decimal(10,2)
SET @value = 11.05
SELECT ROUND(@value, 1) 11.10
SELECT ROUND(@value, 2) 11.05
SELECT ROUND(@value, 3) 11.05
SELECT CEILING(@value) 12
SELECT FLOOR(@value) 11
如同上面的例子,基于不同的长度参数,小数点后第二位的6是有意义的。
DECLARE @value decimal(10,2)
SET @value = -14.46
SELECT ROUND(@value, 1) -14.50
SELECT ROUND(@value, 2) -14.46
SELECT ROUND(@value, 3) -14.46
SELECT CEILING(@value) -14
SELECT FLOOR(@value) -15
这个例子也有助于描述四舍五入值的破坏。这个例子也证明了CEILING和 FLOOR 函数四舍五入成最近的函数。
DECLARE @value decimal(10,10)
SET @value = .5432167890
SELECT ROUND(@value, 1) 0.5000000000
SELECT ROUND(@value, 2) 0.5400000000
SELECT ROUND(@value, 3) 0.5430000000
SELECT ROUND(@value, 4) 0.5432000000
SELECT ROUND(@value, 5) 0.5432200000
SELECT ROUND(@value, 6) 0.5432170000
SELECT ROUND(@value, 7) 0.5432168000
SELECT ROUND(@value, 8) 0.5432167900
SELECT ROUND(@value, 9) 0.5432167890
SELECT ROUND(@value, 10) 0.5432167890
SELECT CEILING(@value) 1
SELECT FLOOR(@value) 0
在最后的例子中,你可以看到在浮点数据类型里采取与上面小数点的例子相同类型的行为。另外,CEILING和FLOOR函数四舍五入成最近的函数。
DECLARE @value float(10)
SET @value = .1234567890
SELECT ROUND(@value, 1) 0.1
SELECT ROUND(@value, 2) 0.12
SELECT ROUND(@value, 3) 0.123
SELECT ROUND(@value, 4) 0.1235
SELECT ROUND(@value, 5) 0.12346
SELECT ROUND(@value, 6) 0.123457
SELECT ROUND(@value, 7) 0.1234568
SELECT ROUND(@value, 8) 0.12345679
SELECT ROUND(@value, 9) 0.123456791
SELECT ROUND(@value, 10) 0.123456791
SELECT CEILING(@value) 1
SELECT FLOOR(@value) 0
floor()向下舍入为指定小数位数 如:floor(1.45,0)= 1;floor(1.55,0) = 1
ceiling()向上舍入为指定小数位数 如:ceiling(1.45,0) = 2;ceiling(1.55,0)=2
- sql中详解round(),floor(),ceiling()函数的用法和区别?
- SQL 中详解round(),floor(),ceiling()函数的用法和区别?
- sql中详解round(),floor(),ceiling()函数的用法和区别
- sql中详解round(),floor(),ceiling()函数的用法和区别?
- sql中详解round(),floor(),ceiling()函数实例
- sql中round(),floor(),ceiling()的实用场景
- Sql : ceiling floor Round 小数位
- 比较sql中CEILING 和FLOOR
- ROUND(),CEILING()和FLOOR()例子
- (sql) CEILING函数, FLOOR 函数
- SQL SERVER FLOOR(),CEILING()函数
- sqlserver中的 CEILING函数和 FLOOR函数
- SQLServer CEILING函数和 FLOOR函数
- SQLServer CEILING函数和 FLOOR函数
- SQLSERVER中的 CEILING函数和 FLOOR函数
- SQL Server 随机数,随机区间,随机抽取数据rand(),floor(),ceiling(),round(),newid()函数等
- C#取整函数Math.Round、Math.Ceiling和Math.Floor
- C#取整函数Math.Round、Math.Ceiling和Math.Floor
- Dex文件结构
- 把妹之道于品牌营销“精屁”
- java数据有效性检验的一些想法
- 迅雷安装脚本
- 单机搭建oracle dg 实验与总结
- SQL 中详解round(),floor(),ceiling()函数的用法和区别?
- 更改NavigationController的背景图片
- JUnit 4的参数化测试
- Count total set bits in all numbers from 1 to n
- Android 源代码在线查看
- 网页提示证书过期的时候,可能是因为系统时间不对造成的。
- 在cocos2d 1.0里面 如何描画图片的一部分. 实现j2me里面的setClip
- 暗暗
- 几个windows命令