Пример
Фрагмент из триггера:
... IF (MODULO(NEW.HOURS * 100, 775) > 0.25) THEN ; NEW.OVERTIME_HOURS = MODULO(NEW.HOURS * 100, 775) / 100;
Связанные или похожие функции
См. также функцию MOD(), которая возвращает число с плавающей точкой
FREEUDFLIB |
F_ROUNDFLOAT(VALUE1, VALUE2) |
Win32 |
Округляет передаваемое значение до ближайшего значения, которое больше или меньше заданной дробной части |
Аргументы |
VALUE1: столбец или выражение, результатом вычисления которого является тип с плавающей точкой. Это округляемое число. VALUE2: столбец или выражение, результатом вычисления которого является тип с плавающей точкой. Это должно быть число меньше 1 и больше 0. Например, передайте значение 0.25 для округления до ближайшей четверти |
Возвращаемое значение |
Число с плавающей точкой, которое является VALUE1, округленным до ближайшей дробной части VALUE2 |
Пример |
Следующий оператор вычисляет PAID_HOURS, округляя HOURS WORKED до ближайшей четверти часа: UPDATE TIMESHEET SET PAID HOURS = F_ROUNDFLOAT(HOURS WORKED, 0.25) WHERE DATE_TIMESTAMP > CURRENT_DATE - 7; |
Связанные или похожие функции |
См. также ROUND() |
FREEUDFLIB |
F_TRUNCATE(VALUE) |
Win32 |
Усекает число с плавающей точкой до целого |
Аргументы |
VALUE является столбцом или выражением, результатом вычисления которого является число с плавающей точкой |
Возвращаемое значение |
Убирает дробную часть у VALUE и возвращает целую часть в виде целого типа |
Пример |
Следующий оператор вернет целое число: SELECT F_TRUNCATE(SUM(AMT_OUTSTANDING)) AS ESTIMATED_DEBTORS FROM ACCOUNT WHERE AMT_OUTSTANDING > 0; |
Связанные или похожие функции |
См. также TRUNCATE() и ROUND() |
IB_UDF |
FLOOR(VALUE) |
Linux, Win32 |
Возвращает значение с плавающей точкой, представляющее наибольшее целое, меньшее или равное VALUE |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION С нулевой дробной частью |
Пример |
SELECT FLOOR (CURRENT_DATE - START_DATE) AS DAYS_ELAPSED FROM DVD_LOANS; |
IB_UDF |
LN(VALUE) |
Linux, Win32 |
Возвращает натуральный логарифм числа |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Пример |
SELECT LN ( (CURRENT_TIMESTAMP - LEASE_DATE) / 7) AS NLOG_WEEKS FROM LEASE_ACCOUNT ; |
IB_UDF |
LOG(VALUE1, VALUE2) |
Linux, Win32 |
Возвращает логарифм по основанию x = VALUE1 числа у = VALUE2 |
Аргументы |
VALUE1 (основание логарифма) и VALUE2 (число, с которым проводится операция) являются столбцами или выражениями, вычисляемыми в числа типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Замечания |
Firebird 1.0.x и версии InterBase в этой функции имеют ошибку: log(x.y) ошибочно инвертирует аргументы и возвращает логарифм по основанию у числа x. Это было исправлено в версии 1.5. Имейте в виду, что существующие хранимые процедуры и код приложения могут иметь корректировки для этой ошибки |
Пример |
SELECT LOG(8, (CURRENT_TIMESTAMP - LEASE_DATE) /7) AS LOG_WEEKS FROM LEASE_ACCOUNT; |
IB_UDF |
LOG10(VALUE) |
Linux, Win32 |
Возвращает десятичный логарифм входного числа |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число типа DOUBLE PRECISION |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Пример |
SELECT LOG1O( (CURRENT_TIMESTAMP - LEASE_DATE) / 7) AS LOG10_WEEKS FROM LEASE_ACCOUNT ; |
IB_UDF |
MODULO(VALUEl, VALUE2) |
Linux, Win32 |
Функция возвращает остаток отделения двух целых чисел |
Аргументы |
VALUE1 и VALUE2 являются столбцами или выражениями, вычисляемыми в числа типа SMALLINT или INTEGER |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Пример |
Фрагмент триггера: ...IF (MODULO(NEW.HOURS * 100, 775) > 25.0) THEN NEW.OVERTIME_HOURS = MODULO(NEW.HOURS * 100, 775) / 100; |
Связанные или похожие функции |
См. также функцию f_Modulo(), которая возвращает целое число |
IB_UDF |
PI() |
Linux, Win32 |
Возвращает значение n = 3.14159... |
Аргументы |
Аргументы отсутствуют, однако скобки требуются |
Возвращаемое значение |
Значение n в виде числа DOUBLE PRECISION |
Пример |
SELECT PI() AS PI_VALUE FROM RDB$DATABASE; |
IB_UDF |
RAND() |
Linux, Win32 |
Возвращает случайное число в диапазоне между 0 и 1. Заметьте, что эта функция не работает в Firebird 1.5 |
Аргументы |
Аргументы отсутствуют, но скобки требуются |
Возвращаемое значение |
Число типа DOUBLE PRECISION |
Замечания |
В настоящее время используется для установления начального значения генератора |
Пример |
SELECT RAND() AS RANDOM NUMBER FROM RDB$DATABASE; |
IB_UDF |
ROUND(VALCE) |
Linux, Win32 |
Округляет число с фиксированной точкой до ближайшего целого |
Аргументы |
VALUE является столбцом или выражением, вычисляемым в число с фиксированной точкой с дробными разрядами >0 |
Возвращаемое значение |
Число целого типа |
Замечания |
Это полное округление. Если цифра сразу после десятичной точки больше или равна 5, то к цифре перед десятичной точкой добавляется единица, и у числа отсекаются дробные цифры. В противном случае просто отсекаются все дробные цифры |
Пример |
Следующий оператор составляет смету на основе результата округления произведения двух чисел NUMERIC(11,2): SELECT JOB_NO, ROUND(RATE * HOURS) + 1 AS ESTIMATE |