Инструменты пользователя

Инструменты сайта


trunc



TRUNC()

Версии сервера

0.9 1.0 1.5.3 1.5.4 1.5.5 2.0 2.1 2.5 3.0
Как UDF Да Да Да Да Да Да - - -
Как встроенная функция - - - - - - Да Да Да

Доступно в

Формат

TRUNC( < аргумент > , < знаков > )
Аргумент Описание
< аргумент > Числовое выражение
< знаков > INTEGER
Возвращает INTEGER, BIGINT или DOUBLE

Описание

Функция TRUNC() возвращает результат округления числа < аргумент > до < знаков > знаков после запятой в меньшую по модулю сторону. Если число < знаков > отрицательное, то округление идет до < знаков > знаков перед запятой.

:!: Чтобы пользоваться этой функцией в Firebird версии младше 2.1, её небходимо подключить к базе данных как UDF.

Объявление

1. В Firebird версии младше 2.1 функция объявляется как UDF в внешнем модуле «fbudf».

DECLARE EXTERNAL FUNCTION TRUNC
    INTEGER BY DESCRIPTOR,
    INTEGER BY DESCRIPTOR
RETURNS PARAMETER 2
ENTRY_POINT 'fbtruncate' MODULE_NAME 'fbudf';

2. В Firebird версии 2.1 и старше является встроенной функцией при соглашении объявления ее как:

DECLARE EXTERNAL FUNCTION TRUNC
    INTEGER BY DESCRIPTOR,
    INTEGER BY DESCRIPTOR
RETURNS PARAMETER 2
ENTRY_POINT 'fbtruncate' MODULE_NAME 'SYSTEM';

Пример

SELECT TRUNC(1111.23456, 2), TRUNC(1.23456, 0), TRUNC(1111.23456, -2) FROM RDB$DATABASE

См. также

Источник

langref.pdf

Обсуждение

Сергей, 2009/03/30 12:13

TRUNC как встроенная функция появилась в 2.1, до этого только UDF. P.S. так же стоит посмотреть на предмет подобной ошибки в описании многих других функции (ABS, ATAN, EXP и многие другие введённые в 2.1)

WildSery, 2009/03/30 12:58

чего писать-то было? это ж вики - взял да исправил. вот как я ;)

Кузнецов Евгений, 2009/03/30 21:50

Доброго времени суток!

Не могу понять фразу:

В Firebird версии 2.1 и старше является встроенной функцией при соглашении объявления ее как

Зачем объявлять встроенные функции? – С уважением, Евгений

PEAKTOP, 2009/04/06 21:19

Смысл фразы в том, что функция, как таковая, - нигде не объявлена, но мы можем ею пользоваться, условно считая, что ее объявили таким образом.

Это тоже самое, как в документации к Borland/Inprise/Borland/CodeGear/Embarcadero компиляторам. Есть базовые функции, которые линкуются компилятором каждый раз к создаваемому exe-файлу и которыми можно пользоваться. Они нигде не объявлены и их реализация является частью ядра dcc32.exe, но мы условно считаем, что существует некий модуль «System.pas» в котором объявлена функция, например, «function Copy(s :string; index, count : Integer):string;» и мы можем ею пользоваться будто бы она объявлена таким образом.

soleil, 2012/02/29 21:34

а для чего введена функа trunc()? есть же ведь round()

fraks, 2013/08/21 06:19

Тип параметров и возвращаемого результата - не INTEGER. На сколько я понимаю - любой тип который может быть приведен к числовому. Такая же ошибка в описании функции ROUND().

Ваш комментарий. Вики-синтаксис разрешён:
M R O T M
 
trunc.txt · Последнее изменение: 2018/03/21 14:44 — 85.140.93.58