◆ SQL
--两个整数相除将截断小数部分
select 3/4,4/3,5/3, 20/3
--结果 0,1,1,6
--返回大于或等于所给数字表达式的最小整数
SELECT CEILING(123.55), CEILING(123.45),CEILING(-123.45), CEILING(0.0)
--结果 124,124,-123,0
---四舍五入 round(a,b) -- 结果a 精确到小数点右 b位,或是左 -b位
select round(54.36,-2), round(54.36,-1),round(54.36,0), round(54.36,1),round(54.36,2)
--结果 100.00,50.00,54.00,54.40,54.36
---四舍五入 并转化为 整数
select cast(round(56.361,0) as int),cast(round(56.561,0) as int)
--结果 56,57
--举例使用
---两个整数相除 舍弃小数部分( 全部都向前进位)
declare @dividend decimal(20,2), @divisor decimal(20,2)
set @dividend=3
set @divisor=4
select CEILING(@dividend/@divisor)
--结果 1
set @dividend=4
set @divisor=3
select CEILING(@dividend/@divisor)
--结果 2
set @dividend=5
set @divisor=3
select CEILING(@dividend/@divisor)
--结果 2
---两个整数相除 四舍五入到整数
set @dividend=3
set @divisor=4
select cast(round(@dividend/@divisor,0) as int)
--结果 1
set @dividend=4
set @divisor=3
select cast(round(@dividend/@divisor,0) as int)
--结果 1
set @dividend=5
set @divisor=3
select cast(round(@dividend/@divisor,0) as int)
--结果 2
◆ ACCESS
1.再請問為何問題1中, 229.5\8.5 會等於28,而不是27,明明是整除啊?是什麼原因造成這項差異呢?
2.我試過將二者各乘以10,即 2295\85,答案則為27,如果我的被除數確定在小數點3位數以內,那是否可如法泡製,將被除數及除數各乘1000,變成整數後,再作整數除法"﹨"?
==>
在執行整數除法運算之前,這種數值運算式必須是 Byte、Integer 或是 Long運算式(都是整數的),任何的小數部分都會被刪除。所以運算式會變成 229\8 =28
二、取餘數
◆SQL
1. 取餘數 229 % 10 = 9