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

posted @ 2012-08-30 12:13  大枣  阅读(731)  评论(0编辑  收藏  举报