ABS() | Возвращает абсолютную величину арифметического значения. |
ASC() | Преобразует символ в его код ASCII. |
BETWEEN() | Проверка значения |
BIN2I() | Преобразует 16-битовое целое со знаком в числовое значение. |
BIN2L() | Преобразует 32-битовое целое со знаком в числовое значение. |
BIN2W() | Преобразует 16-битовое целое без знака в числовое значение. |
CHR() | Преобразует код ASCII в его символьное значение. |
DSTRTON() | Преобразует строку c "double"-представлнием в xClipper-число. |
EMPTY() | Определяет, является ли результат выполнения выражения пустым. |
EXP() | Вычисляет e в степени x. |
FSTRTON() | Преобразует строку c "float"-представлнием в xClipper-число. |
FT_GCD() | Calculate greatest common divisor of two numbers |
FT_NETPV() | Calculate net present value |
FT_RAND1() | Generate a random number |
FT_ROUND() | Rounds a number to a specific place |
HASHNAME() | Возвращает строку, из которой был получен хэш-код. |
HASHSTR() | Возвращает хэш-код строки. |
I2BIN() | Преобразует числовую величину в двухбайтное двоичное целое. |
INT() | Преобразует числовое значение в целое. |
ISDIGIT() | Определяет, является ли первый символ в строке цифрой. |
L2BIN() | Преобразует числовую величину в 32-битовое двоичное целое. |
LEN() | Определяет длину символьной строки или количество элементов в массиве. |
LOG() | Вычисляет натуральный логарифм числовой величины. |
MAX() | Возвращает большее из двух чисел или дат. |
MIN() | Возвращает меньшее из двух чисел или значения дат. |
MOD() | Возвращает остаток от деления двух чисел. |
QOUT() | Выводит список выражений на консоль. |
ROUND() | Возвращает округленное до заданного числа цифр числовое выражение. |
SQRT() | Возвращает квадратный корень положительного числа. |
TRANSFORM() | Преобразует заданное выражение в форматированную строку символов. |
TYPE() | Определяет тип выражения. |
VAL() | Преобразует число в символьной форме в числовой тип. |
VALTYPE() | Определяет тип данных выражения. |
ABS(<арифметическое выражение>) --> положительное число
ABS() возвращает число, представляющее абсолютное значение ее аргумента. Возвращаемое значение - это положительное число или ноль.
ABS() - это числовая функция, которая служит для определения величины числового значения независимо от его знака. Это позволяет, например, определить разность между двумя числами в виде положительного значения, не зная заранее, какое из них больше.
Формально функция ABS(X) определяется в терминах ее аргумента X следующим образом: если X > 0, то ABS( X ) возвращает X, иначе ABS(X) возвращает -X.
Следующие примеры показывают типичные результаты, выдаваемые функцией ABS(): nNum1 = 100 nNum2 = 150 ? nNum1 - nNum2 // Результат: -50 ? ABS(nNum1 - nNum2) // Результат: 50 ? ABS(nNum2 - nNum1) // Результат: 50 ? ABS(-12) // Результат: 12 ? ABS(0) // Результат: 0
BIN2I(<строка символов>) --> целое число
BIN2I() возвращает число целого типа.
BIN2I() - это функция работы с файлами низшего уровня, которая используется в сочетании с функцией FREAD() для преобразования двухбайтных символьных строк, рассматриваемых как целые числа со знаком, в числа формата, принятого в системе xClipper. Такие преобразования чаще всего необходимы, когда вы считываете файлы других типов и хотите прочитать арифметические данные в их истинном формате.
В этом примере открывается файл базы данных и считывается дата последнего его обновления ( байты 1 - 3 ). Результат - тот же самый, как если бы вы использовали функцию LUPDATE(): #include "Fileio.ch" // nHandle = FOPEN("Sales.dbf", FO_READ) // // Установить указатель на первый байт файла. FSEEK(nHandle, 1, FS_SET) // // Читать дату последнего обновления файла. nYear = BIN2I(FREADSTR(nHandle, 1) + CHR(0)) nMonth = BIN2I(FREADSTR(nHandle, 1) + CHR(0)) nDay = BIN2I(FREADSTR(nHandle, 1) + CHR(0)) // ? LTRIM(STR(nMonth)), LTRIM(STR(nDay)), LTRIM(STR(nYear)) FCLOSE(nHandle)
BIN2L(<строка символов>) --> целое число
BIN2L() возвращает число целого типа.
BIN2L() - это функция работы с массивами низшего уровня, которая используется в комбинации с функцией FREAD() для преобразования четырехбайтных символьных строк, форматированных как целое со знаком, в числа формата, используемого с системе xClipper. Чаще всего она используется при чтении файлов других типов для получения числовых данных в их собственном формате.
Этот пример открывает файл базы данных, используя функцию обработки файлов низшего уровня и считывает количество записей (байты 4-7). Результат тот же, что и при использовании функции LASTREC(): #include "Fileio.ch" // nHandle = FOPEN("Sales.dbf", FO_READ) // // Установить указатель на четвертый байт. FSEEK(nHandle, 4, FS_SET) // // Читать количество записей. cRecords = SPACE(4) FREAD(nHandle, @cRecords, 4) // ? LTRIM(STR(BIN2L(cRecords))) // Результат : 84 FCLOSE(nHandle)
BIN2W(<строка символов>) --> целое число
BIN2W() возвращает целое числовое значение.
BIN2W() - функция обработки файлов низшего уровня, которая используется в комбинации с функцией FREAD() для преобразования двухбайтных строк символов, форматированных как целое без знака, в числовые величины xClipper. Чаще всего она используется при чтении двоичного файла для получения числа в его собственном формате.
В этом примере открывается файл базы данных, используя функции обработки файлов низшего уровня, и считывается количество байтов в записях (байты 10-11). Результат тот же, что при использовании функции RECSIZE(): #include "Fileio.ch" // nHandle = FOPEN("Sales.dbf", FO_READ) // // Установить указатель на 10-й байт - первый байт переменной, // содержащий значение длины записи FSEEK(nHandle, 10, FS_SET) // // Читать длину записи cRecSize = SPACE(2) FREAD(nHandle, @cRecSize, 2) // ? LTRIM(STR(BIN2W(cRecSize))) // Результат: 124 FCLOSE(nHandle)
EXP(<значение>) --> е в степени <значение>
EXP() возвращает числовое значение, равное е в заданной степени.
EXP() является математической функцией, которая вычисляет е**x, где е - основание натурального логарифма, а х - числовое значение. Максимальное значение выражения <значение> равно 45. При больших значениях экспоненты происходит числовое переполнение. EXP() и LOG() являются взаимно обратными функциями. Число знаков, выводимых на дисплей после десятичной точки, определяется командой SET DECIMALS, при этом текущее значение SET FIXED не учитывается.
В примере демонстрируется несколько вызовов EXP(): ? EXP(1) // Результат: 2.72 SET DECIMALS TO 10 ? EXP(1) // Результат: 2.7182818285 ? LOG(EXP(1)) // Результат: 1.0000000000
FT_GCD( <nNumber1>, <nNumber2> ) -> nGCD
The greatest common divisor of the 2 numbers, or 0 if either is 0.
This function calculates the greatest common divisor between 2 numbers, i.e., the largest number that will divide into both numbers evenly. It will return zero (0) if either number is zero.
? FT_GCD(10,15) // Result: 5 ? FT_GCD(108,54) // Result: 54 ? FT_GCD(102,54) // Result: 6 ? FT_GCD(111,17) // Result: 1
FT_NETPV( <nInitialInvestment>, <nInterestRate>, <aCashFlow> ; [, <nNoOfCashFlows> ] ) -> nNetPV
<nInitialInvestment> | is the amount of cash invested for purposes |
of generating the cash flows. | |
<nInterestRate> | is the annual interest rate used to discount |
expected cash flows (10.5% = 10.5, not .105). | |
<aCashFlow> | is an array of the expected cash receipts each year. |
<nNoOfCashFlows> | is the number of years cash flows are expected |
(optional, Len( aCashFlow ) ). |
The difference between the initial investment and the discounted cash flow in dollars.
This function calculates the net present value, the difference between the cost of an initial investment and the present value of the expected cash flow(s) from the investment. The present value of the expected cashflow(s) is calculated at the specified interest rate, which is often referred to as the "cost of capital".
This function can be used to evaluate alternative investments. The larger the NPV, the more profitable the investment. See also the FutureValue and PresentValue for further explanations. The formula to calculate the net present value is:
NetPresentValue = SUM(CashFlow[i] / ((1 + InterestRate) ** i)) FOR i = 1 TO NoOfCashFlows
nNetPresentValue := FT_NETPV(10000, 10, { 10000,15000,16000,17000 } )
FT_RAND1( <nMax> ) -> nRand
nRand is a random number between 0 (inclusive) and <nMax> (exclusive).
Generates a non-integer random number based on the Linear Congruential Method.
If you need a random number between 1 and <nMax> inclusive, INT() the result and add 1.
If you need a random number between 0 and <nMax> inclusive, then you should ROUND() the result.
nResult := INT( FT_RAND1(100) ) + 1 // 1 <= nResult <= 100 nResult := ROUND( FT_RAND1(100), 0 ) // 0 <= nResult <= 100 nResult := FT_RAND1( 1 ) // 0 <= nResult < 1
FT_ROUND( <nNumber> [, <nRoundToAmount> ; [, <cRoundType> [, <cRoundDirection> ; [, <nAcceptableError> ] ] ] ] ) -> nNumber
<nNumber> | is the number to round |
<nRoundToAmount> | is the fraction to round to or the number of places, |
default is 2. | |
<cRoundType> | is the type of rounding desired |
"D" for Decimal (3 for thousandth, 1/1000) (default) | |
"F" for Fraction (3 for thirds, 1/3) | |
"W" for Whole numbers (3 for thousand, 1000) | |
<cRoundDirection> | is the direction to round the number toward |
"U" to round Up 1.31 -> 1.4 | |
-1.31 -> -1.4 | |
"D" to round Down 1.36 -> 1.3 | |
-1.36 -> -1.3 | |
"N" to round Normal 1.5 -> 2 | |
-1.5 -> -2 | |
1.49 -> 1 | |
-1.49 -> -1 | |
<nAcceptableError> | is the amount that is considered acceptable |
to be within, i.e., if you're within this amount of the number | |
you don't need to round |
The number, rounded as specified.
This function will allow you to round a number. The following can be specified: a. Direction (up, down or normal - normal is 4/5 convention) b. Type (whole, decimal, fraction) c. Amount (100's, 5 decimals, 16th, etc.)
// round normal to 2 decimal places nDollars := FT_ROUND(nDollars) // round normal to 6 decimal places nIntRate := FT_ROUND(nIntRate, 6) // round to nearest thousands nPrice := FT_ROUND(nPrice, 3, NEAREST_WHOLE_NUMBER) // round Up to nearest third nAmount := FT_ROUND(nAmount, 3, NEAREST_FRACTION, ROUND_UP) // round down to 3 decimals Within .005 nAvg := FT_ROUND(nAvg, 3, , ROUND_DOWN, .005)
I2BIN(<целое число>) --> символьная строка
I2BIN() возвращает двухбайтную символьную строку, содержащую 16-битовое двоичное целое число.
I2BIN() является функцией обработки файлов низкого уровня, которая преобразует числовую величину в символьную строку в формате двоичного целого - младший байт располагается первым. I2BIN() используется вместе с FWRITE() для преобразования числовой величины в формате xClipper в стандартную двоичную форму. Обратной функцией к I2BIN() является BIN2I().
Этот пример открывает файл базы данных, используя файловые функции низкого уровня, и записывает новую дату последнего изменения в байты с 1 по 3: #include "Fileio.ch" // nHandle = FOPEN("Sales.dbf", FO_READWRITE) // // Преобразует дату последнего изменения в целое. nYear = I2BIN(90) nMonth = I2BIN(12) nDay = I2BIN(15) // // Указатель на дату последнего изменения. FSEEK( nHandle, 1, FS_SET ) // // Запись новой даты последнего изменения // с использованием только одного байта. FWRITE( nHandle, nYear, 1) FWRITE( nHandle, nMonth, 1) FWRITE( nHandle, nDay, 1) FCLOSE( nHandle)
INT(<арифметическое выражение>) --> целое число
INT() возвращает целое числовое значение.
INT() - это арифметическая функция, которая преобразует числовое значение в целое отбрасыванием (не округлением) его дробной части. INT() полезна в операциях, когда дробная часть числа не нужна.
Следующие примеры демонстрируют результаты различных вызовов функции INT(): ? INT(100.00) // Результат: 100 ? INT(.5) // Результат: 0 ? INT(-100.75) // Результат: -100
L2BIN(<числовая величина>) --> символьная строка
L2BIN() возвращает четырехбайтную символьную строку в формате 32-битового двоичного целого.
L2BIN() является функцией обработки файлов низкого уровня, которая используется вместе с функцией FWRITE() для записи числовых величин в двоичный файл. Она сходна с функцией I2BIN(), которая преобразует числовую величину xClipper формата в 16-битовое двоичное целое.
L2BIN() обратна функции BIN2L(), которая используется для преобразования числовой величины, вводимой из двоичного файла, в числовую величину формата xClipper.
Этот пример создает новый двоичный файл и записывает в него ряд чисел, при этом используется функция L2BIN() для преобразования числовых величин в 32-битовую двоичную форму: #include "Fileio.ch" // LOCAL nNumber, nHandle nHandle := FCREATE("MyFile", FC_NORMAL) FOR nNumber := 1 TO 100 FWRITE( nHandle, L2BIN(nNumber) + CHR(0)) NEXT FCLOSE(nHandle)
LOG(<арифметическое выражение>) --> натуральный логарифм
LOG() возвращает значение натурального логарифма в виде числа. Если значение аргумента <арифметическое выражение> меньше или равно нулю, LOG() возвращает строку звездочек (*), означающую числовое переполнение.
LOG() является числовой функцией, которая вычисляет натуральный логарифм и обратна по действию функции EXP(). Основанием натурального логарифма является e = 2.7183. В выражении, приведенном ниже, функция LOG() возвратит x:
e ** x = y
где y - числовое выражение, используемое как аргумент функции LOG() (т.е. LOG(y) = x). Из-за округлений в вычислениях возвращаемые функциями LOG() и EXP() значения могут точно не совпадать (т.е. EXP(LOG(x)) не всегда будет равен x).
Следующие примеры иллюстрируют различные результаты LOG() : ? LOG(10) // Результат: 2.30 ? LOG(10 * 2) // Результат: 3.00 ? EXP(LOG(1)) // Результат: 1.00 ? LOG(2.71) // Результат: 1.00 В этом примере представлена функция пользователя, которая возвращает логарифм по основанию 10: FUNCTION Log10( nNumber ) IF nNumber > 0 RETURN LOG(nNumber) / LOG(10) ELSE RETURN NIL ENDIF
MAX(<арифметическое выражение1>, <арифметическое выражение2>) --> большее число MAX(<дата1>,<дата2>) --> большая дата
MAX() возвращает значение большего из двух аргументов. Тип результата тот же, что и у аргумента.
MAX() является числовой функцией и функцией обработки дат. Она используется для подтверждения того, что значение выражения больше некоторого определенного минимума. Обратной функцией является MIN(), которая возвращает меньшее из двух числовых величин или дат.
Этот пример демонстрирует тот факт, что функция MAX() возвращает наибольшее из двух числовых величин: ? MAX( 1, 2) // Результат: 2 ? MAX( 2, 1) // Результат: 2 Эти примеры демонстрируют MAX(), сравнивающую две даты: ? DATE() // Результат: 09/01/90 ? MAX(DATE(), DATE() + 30) // Результат: 10/01/90 ? MAX(DATE(), CTOD("")) // Результат: 09/01/90
МIN(<арифметическое выражение1>,<арифметическое выражение2>) --> меньшее число MIN(<дата 1>,<дата 2>) --> меньшая дата
MIN() возвращает наименьший из двух аргументов. Возвращаемое значение того же типа данных, что и аргументы.
MIN() - функция обработки чисел и дат, используемая для выделения значения выражения меньшего, чем заданный минимум. Обратной функцией для MIN() является MAX(), которая возвращает большее из двух числовых значений или дат.
Этот пример демонстрирует функцию MIN(), которая возвращает наименьшее из двух числовых значений. ? MIN(99,100) // Результат: 99 ? MIN(100,99) // Результат: 99 Этот пример демонстрирует функцию MIN(), сравнивающую два значения даты. ? DATE() // Результат: 09/01/90 ? MIN(DATE(), DATE()+30) // Результат: 09/01/90
MOD(<делимое>,<делитель>) --> остаток.
MOD() возвращает число, которое является остатком от деления <делимого> на <делитель>.
MOD() - арифметическая функция, которая эмулирует dBASE III PLUS функцию MOD(). Она реализована с использованием оператора языка xClipper - остаток от деления (%). Функция MOD() не рекомендуется для использования, так как она по своим возможностям аналогична оператору - остаток от деления (%).
ROUND(<число>, <дробная часть>) --> округленное число
ROUND() возвращает округленное число.
ROUND() - арифметическая функция, которая округляет число до количества десятичных разрядов, заданных аргументом <дробная часть>. Задание нуля или отрицательного значения приводит к округлению целой части числа.
Отрицательное значение аргумента <дробная часть> указывает количество десятичных разрядов слева от запятой, до которых надо округлить число.
Числа от 5 до 9 включительно округляются в большую сторону. Числа меньше пяти - в меньшую.
Вывод возвращаемого значения не зависит от текущей установки команды SET DECIMALS до тех пор, пока SET FIXED находится в режиме ON. По команде SET FIXED OFF выводится столько десятичных разрядов, сколько указано аргументом <дробная часть>, или не выводится вовсе, если значение аргумента <дробная часть> меньше 1.
В следующих примерах производится округление дробной части чисел: SET DECIMALS TO 2 SET FIXED ON // ? ROUND(10.4, 0) // Результат: 10.00 ? ROUND(10.5, 0) // Результат: 11.00 ? ROUND(10.51, 0) // Результат: 11.00 ? ROUND(10.49999999999999, 2) // Результат: 10.50 Эти примеры используют отрицательный аргумент <дробная часть> для округления целой части чисел: ? ROUND(101.99, -1) // Результат: 100.00 ? ROUND(109.99, -1) // Результат: 110.00 ? ROUND(109.99, -2) // Результат: 100.00
SQRT(<число>) --> квадратный корень
SQRT() возвращает числовое значение, вычисленное с двойной точностью. Число разрядов дробной части определяется установкой команды SET DECIMALS и не зависит от установок команды SET FIXED. При отрицательном значении аргумента <число> функция возвращает ноль.
SQRT() является арифметической функцией, используемой для вычисления квадратного корня. Например, это может быть выражение для вычисления стандартного отклонения от математического ожидания.
Этот пример показывает различные результаты использования SQRT(): SET DECIMALS TO 5 // ? SQRT(2) // Результат: 1.41421 ? SQRT(4) // Результат: 2.00000 ? SQRT(4) ** 2 // Результат: 4.00000 ? SQRT(2) ** 2 // Результат: 2.00000
Пред. | Начало | След. |
STRING | Уровень выше | OBJECT |