Firebird里如何在提交数据前做四舍五入?
很多时候,在存储过程或触发器里经过运算后的数字要写入记录,但这种运算的结果数字往往是个无限小数,所以需要预先做个四舍五入,如金额一般是保留两位小数。
Firebird2.1开始,增加了很多内置函数,这样,以前很多不得不通过UDF做的事,就可以直接使用了。
如Trunc()函数,就可以用来做四舍五入的数据转换了。
如这段代码:
fAmount = TRUNC((fAmount * fdiscount * fNumber / fTotal), 2)
Trunc()函数的格式如下:
TRUNC (<number> [, <scale>])
<number> 输入的浮点数
<scale> 控制四舍五入的位置
2 保留到2位小数,如 TRUNC(789.2225, 2) 返回:789.2200 (不是789.22)
1 保留到1位小数,如 TRUNC(789.2225, 1) 返回:789.2000 (不是789.2)
0 无小数位,如 TRUNC(-163.41, 0) 返回: -163.00 (不是-163)
-1 进位到 10,如 TRUNC(-163.41, -1) 返回: -160.00 (不是-160)
-2 进位到 100, 如 TRUNC(-163.41, -1) 返回: -200.00 (不是-200)
不设置scale时才能得到整数:
TRUNC(345.4) 返回:345