access中含四舍五入取值方法的查询sql语句

来源:互联网 发布:商业银行数据 编辑:程序博客网 时间:2024/03/29 08:59

最近使用水晶报表需要用到sql语句,其中需要对某个字段进行四舍五入

开始使用的是round方法,结果用户反馈汇总的数据有问题。

自己找了数据测试没问题,找同事一起测试2个数据也没问题。

让用户发来数据再测试,问题确实存在。

分析后发现 round方法没有进行四舍五入,直接取到小数点后2位,举例 12.045 直接就取成12.04.

正解:

select Fix((字段名 + Sgn(字段名) * 0.5 / 10 ^ 2) * 10 ^ 2) / 10 ^ 2 as 四舍五入 from tablename

说明:

Fix函数:fix(x)函数与int(x)函数同为取整函数,但有所不同。当x为正时,两个取整函数都是删除x小数部分,返回其整数部分的值,不进行四舍五入;当x为负时,Int(x)返回小于或等于x的最大整数,fix(x)函数返回大于或等于x的最小整数。即fix函数指的是直接取x的整数部分,而int函数则是不大于x的整数。x可以是实数型或货币型数据。

Sgn函数:数学上的符号函数

  即 x>0,sgnx=1

  x=0,sgnx= 0

  x<0,sgnx=-1

 

Fix((12.045 + 0.5/100)*100)/100 = Fix(1205) / 100 = 12.05