truncate, i64truncate

<< substrlen | FB 2.0 Language Reference | Appendix A: Notes >>

truncate, i64truncate

Library: fbudf

Added in: 1.0 (Win), 1.5 (Linux)

Changed in: 1.5, 2.0.6

Description

These functions return the whole-number portion of their (scaled numeric/decimal) argument. They do not work with floats or doubles.

Result type: INTEGER / NUMERIC(18)

Syntax

 truncate    (number)
 i64truncate (bignumber)

Caution: Both functions round to the nearest whole number that is lower than or equal to the argument. This means that negative numbers are also "truncated" downward. For instance, truncate (-2.37) returns -3.

Bug alert: Contrary to what's mentioned above, in versions 2.0 through 2.0.5 anything between -1 and 0 is truncated to 0. This anomaly has been corrected in Firebird 2.0.6 and above (as a backport from 2.5).

Declarations

In Firebird 1.0.x, the entry point for both functions is truncate:

 DECLARE EXTERNAL FUNCTION Truncate
   INT BY DESCRIPTOR, INT BY DESCRIPTOR
   RETURNS PARAMETER 2
   ENTRY_POINT 'truncate' MODULE_NAME 'fbudf'

 DECLARE EXTERNAL FUNCTION i64Truncate
   NUMERIC(18) BY DESCRIPTOR, NUMERIC(18) BY DESCRIPTOR
   RETURNS PARAMETER 2
   ENTRY_POINT 'truncate' MODULE_NAME 'fbudf'

In Firebird 1.5, the entry point has been renamed to fbtruncate:

 DECLARE EXTERNAL FUNCTION Truncate
   INT BY DESCRIPTOR, INT BY DESCRIPTOR
   RETURNS PARAMETER 2
   ENTRY_POINT 'fbtruncate' MODULE_NAME 'fbudf'

 DECLARE EXTERNAL FUNCTION i64Truncate
   NUMERIC(18) BY DESCRIPTOR, NUMERIC(18) BY DESCRIPTOR
   RETURNS PARAMETER 2
   ENTRY_POINT 'fbtruncate' MODULE_NAME 'fbudf'

If you move an existing database from Firebird 1.0.x to 1.5 or higher, drop any existing *round and *truncate declarations and declare them anew, using the updated entry point names. From Firebird 2.0 onward you can also perform this update with ALTER EXTERNAL FUNCTION.

back to top of page
<< substrlen | FB 2.0 Language Reference | Appendix A: Notes >>