Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
10.6 Mб
Скачать

3.2.4. Преобразование числовых данных

В программе числовые константы и переменные могут иметь только тип Numeric, числовые поля таблиц, кроме типа Numeric, могут быть типа Double, Float или Integer.

Числовые данные могут быть преобразованы в символьные в результате употребления функции STR( ) или TRANSFORM( ) и, наоборот, строка символов преобразовывается в число функцией VAL( ).

Если число интерпретируется как дата юлианского календаря, то последняя преобразовывается в строку, содержащую символьное представление даты по новому стилю, функцией SYS(10).

3.2.5. Форматирование числовых данных

Форматированием числовых данных управляют приведенные в разделе команды.

Команда

SET DECIMALS TO [nDecimalPlaces]

устанавливает минимальное число десятичных знаков, равное nDecimalPlaces, отображаемых при выводе числа. По умолчанию или при выполнении команды без параметра nDecimalPlaces отображаются 2 десятичных знака. Максимальное число десятичных знаков – 18, минимальное – 0.

Пример:

set decimals to 2

xValue = Sqrt(2)

? xValue && Напечатает: 1.41

set decimals to 4

? xValue && Напечатает: 1.4142

Команда

SET FIXED ON | OFF

задает или отменяет строгое следование команде SET DECIMALS.

При использовании команды с опцией ON при выводе числа используются установки команды SET DECIMALS. При употреблении опции OFF (действует по умолчанию) число отображаемых десятичных знаков результата выражения определяется либо его операндами, либо установкой SET DECIMALS, если вещественный результат имеет меньше десятичных знаков, чем задано SET DECIMALS.

Содержимое полей таблиц отображается с учетом объявленного числа десятичных знаков

Пример:

set decimals to 3

set fixed off

store 5.12345 to x

store 2.00 to y

&& Отображаются 7 десятичных знаков, то есть столько,

&& сколько в сумме имеют переменные x и y

? x * y && Напечатает: 10.2469000

&& Отображаются 3 десятичных знака, то есть столько,

&& сколько установлено SET DECIMALS

? 2 / 5 && Напечатает: 0.400

set fixed on

&& Во всех случаях отобразятся 3 десятичных знака

? x * y && Напечатает: 10.247

? 2 / 5 && Напечатает: 0.400

Команда

SET POINT TO [cDecPointChar]

задает символ cDecPointChar, используемый для отображения десятичной точки при выводе числа. В выражениях нужно по-прежнему употреблять точку.

Пример:

set point to "^"

? 5.123 && Напечатает: 5^123

&& Восстанавливаем заданный по умолчанию символ

set point to

Команда

SET SEPARATOR TO [cSeparatortChar]

Задает символ cSeparatortChar, употребляемый в качестве разделителя групп в целой части числа.

Пример:

set separator to "–"

? 10000000 picture '999,999,999' && Напечатает: 10–000–000

&& Восстанавливаем заданный по умолчанию разделитель

set separator to

Замечания:

  1. Настройку форматирования числовых данных можно выполнить на вкладке Regional диалогового окна Options, открываемого из меню Tools.

  2. Установки приведенных в таблице команд сохраняются с текущей сессией данных.

3.2.6. Функции для числовых данных

Приведены в табл. 3.12.IN( )

Таблица 3.12

Функции для числовых данных

Функция

Описание и примеры

ABS(nExpression)

Возвращает абсолютное значение nExpression

? Abs(–25.2) && Напечатает: 25.2

ACOS(nExpression)

Возвращает арккосинус (в радианах) вещественного аргумента nExpression, абсолютного величина которого не превышает 1.0. Диапазон изменения результата – [0, ]. Для преобразования радиан в градусы употребляется RTOD( )

ASIN(nExpression)

Возвращает арксинус (в радианах) вещественного аргумента nExpression, абсолютного величина которого не превышает 1.0. Диапазон изменения результата – [–/2, +/2]

ATAN(nExpression)

Возвращает арктангенс (в радианах) вещественного аргумента nExpression. Диапазон изменения результата – [–/2, +/2]

ATN2(nY, nX)

Возвращает арктангенс (в радианах) вещественного числа равного nX / nY. Диапазон изменения результата – [–, +]

BINTOC(nExpression [, eFlags])

Преобразовывает целую величину nExpression в двоичную в символьном представлении. Тип результата – Character. Параметр eFlags задает длину возвращаемой символьной строки, тип хранимого ей результата и определяет диапазон изменения nExpression; может принимать следующие значения:  1 – диапазон nExpression: –128 – 127;  2 – " " –32,768 – 32,767;  4 – " " –2,147,483,648 – 2,147,483,647;  8 – диапазон nExpression зависит от его типа. С таким значением параметра поддерживаются только типы Numeric, Float, Double и Currency; результат, возвращаемый BINTOC( ), имеет 8 байт;  F – nExpression рассматривается как поле типа Float и BINTOC( ) возвращает 4 байта;  B – nExpression рассматривается как поле типа Double и BINTOC( ) возвращает 8 байт;  R – реверсируется результирующая двоичная величина;  S – предотвращает изменение знакового бита числа (BITXOR). Параметр eFlags используется аддитивно; может быть задан как число и как символ (строка), регистр символов произвольный, например:

? Bintoc(1, 1) ? Bintoc(1000, "2") && или: Bintoc(1000, 2) ? Bintoc($12.34,8) ? Bintoc(1, "4RS") && или: Bintoc(1, "RS") ? Bintoc(–100, "Fr")

Если параметр eFlags опущен, то длина результата 4 символа. Функция BINTOC( ) может быть использована для уменьшения размера индекса числового поля с целыми данными. Так, если поле iPartCode содержит значения от 1 до 32,767, то следующая команда создаст 2-символьный индексный ключ:

index on Bintoc(iPartCode, 2) tag PartCode

CEILING(nExpression)

Возвращает наименьшее целое, большее или равное значению вещественного аргумента nExpression

? Ceiling(5.2) && Напечатает 6 ? Ceiling(–5.2) && Напечатает –5

COS(nExpression)

Возвращает косинус вещественного аргумента

CTOBIN(cExpression)

Преобразовывает двоичное число cExpression в символьном представлении в целую величину; выполняет действие, обратное действию BINTOC( )

DTOR(nExpression)

Преобразовывает градусы в радианы

? Dtor(180) && Напечатает: 3.14

EXP(nExpression)

Возвращает enExpression

FLOOR(nExpression)

Возвращает наименьшее целое, меньшее или равное значению вещественного аргумента nExpression

? Floor(5.2) && Напечатает 5 ? Floor(–5.2) && Напечатает –6

INT(nExpression)

Возвращает целую часть вещественного аргумента nExpression

? Int(5.2) && Напечатает 5 ? Int(–5.2) && Напечатает –5

LOG(nExpression)

Возвращает натуральный логарифм вещественного аргумента nExpression

LOG10(nExpression)

Возвращает десятичный логарифм вещественного аргумента nExpression

MAX(eExpression1, eExpression2 [, eExpression3 …])

Возвращает значение наибольшего параметра

MIN(eExpression1, eExpression2 [, eExpression3 …])

Возвращает значение наименьшего параметра

MOD(nDevidend, nDevisor)

Возвращает, как и операция %, остаток от деления выражения nDevidend / nDevisor

? Mod(7, 4) && Напечатает: 3 ? Mod(5.2, 2.3) && Напечатает: 0.6

MTON(mExpression)

Возвращает числовое значение аргумента mExpression, имеющего тип Currency

? Mton($28.75) && Напечатает: 28.7500

NTOM(nExpression)

Возвращает значение типа Currency, имеющее 4 десятичных знака, для числового аргумента nExpression

? Ntom(28.75) && Напечатает: 28.7500

PI( )

Возвращает число 

RAND([nSeedValue])

Возвращает вещественное случайное число, большее или равное 0 и меньшее 1.0. Последовательность генерируемых случайных чисел зависит от величины аргумента nSeedValue, изменяющего стартовую точку (затравку) генератора случайных чисел. Если параметр nSeedValue отрицателен, то стартовая точка зависит от системного времени. Если параметр nSeedValue опущен, то в качестве затравки используется число 100.001. При использовании nSeedValue функция RAND( ) вызывается с этим параметром лишь первый раз. Остальные вызовы выполняются без указания параметра, например:

dimension a(100) someArray(1) = Rand(–1) for k = 2 to 100 someArray(k) = Rand( ) next

Одна и та же положительная затравка даст одинаковую последовательность случайных чисел. Чтобы нарушить эту закономерность, в качестве nSeedValue указывается отрицательное число

ROUND(nExpression, nDecimalPlaces)

Возвращает числовое значение аргумента nExpression, округленное до nDecimalPlaces десятичных знаков Если nDecimalPlaces < 0, то ближайшие к десятичной точке цифры целой части числа замещаются на 0

set decimals to 4 v = 123.8456 ? v && Напечатает: 123.8456 ? Round(v, 2) && Напечатает: 123.8500 ? Round(v, –2) && Напечатает: 100.0000 ? Round(v, –3) && Напечатает: 0.0000

RTOD(nExpression)

Преобразовывает радианы в градусы

? Rtod(Pi( )) && Напечатает: 180.00

SIGN(nExpression)

Возвращает 1, –1 или 0, если вещественный аргумент nExpression соответственно положителен, отрицателен или равен нулю

? Sign(–532.12) && Напечатает: –1

SIN(nExpression)

Возвращает синус вещественного аргумента nExpression

SQRT(nExpression)

Возвращает квадратный корень из вещественного неотрицательного аргумента nExpression

TAN(nExpression)

Возвращает тангенс вещественного аргумента nExpression

VAL(cExpression)

Возвращает числовое значение, содержащееся в символьном аргументе cExpression

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]