Распечатать страницу

Употребление типа CURRENCY в Visual FoxPro

« Назад

Введен для отображения операций с денежной массой.

Перед константой типа Currency можно употребить унарные – и +, например:

someMoney = +$123.45

lostMoney = –$321.54

Замечание. Знак $ используется в константах типа Currency независимо символа валюты, задаваемого командой SET CURRENCY.

С данными типа Currency можно употреблять те же операции, что и с числовыми типами данных; результаты операций будут иметь тип Currency, например:

yVar1 = $100

yVar2 = $20.45

? yVar1 + yVar2                 && Напечатает:120.4500

? yVar1 * yVar2                 && Напечатает: 2045.0000

? yVar2 / yVar1                  && Напечатает: 0.2045

? yVar1 % 30                      && Напечатает: 10.0000

? yVar1^2                           && Напечатает: 10000.0000

Если в арифметическом выражении имеется хотя бы один операнд типа Currency, то тип результата выражения также будет Currency (исключение составляет операция возведения в степень. Например:

yVar1 = $100

? VarType(2000 / (5 + 2 * yVar1))  && Напечатает: Y

? VarType(yVar1^2)          && Напечатает: N

В принципе, данные типа Currency можно передавать в качестве параметров числовых функций. Тип результата зависит от функции. Так, значение типа Currency вернут, кроме функции NTOM( ), функции ABS( ), CEILING( ), FLOOR( ), INT( ), MOD( ) и ROUND( ). Математические функции, например SQRT( ), могут принять аргумент типа Currency, но вернут числовой результат. Например:

? Sqrt($100)                        && Напечатает: 10.0000

? VarType(Sqrt($100))       && Напечатает: N

? VarType(Abs(–$100))     && Напечатает: Y

По умолчанию при выводе на печать в качестве символа валюты отображается знак $, например если при форматировании данных используется FUNCTION "$":

set currency to

? $123.45 function "$"        && Напечатает: 123.4500$

Однако значение по умолчанию можно заменить на иное.

Команды

SET CURRENCY TO [cCurrencySymbol]

и

SET CURRENCY LEFT | RIGHT

определяют символ валюты и его позицию при отображении данных типа Numeric, Currency, Float и Double.

Опции и параметр:

cCurrencySymbol – строка, задающая символы валюты.

Кроме того, символ валюты и другие установки можно задать интерактивно на вкладке Regional диалога Tools – Options (рис. 3.2).

44.1.-Фрагмент-вкладки-Regional

Рис. 3.2. Фрагмент вкладки Regional

Выполнение SET CURRENCY TO восстанавливает заданный по умолчанию символ валюты.

LEFT – (по умолчанию) позиционирует символ валюты слева от значения.

RIGHT – позиционирует символ валюты справа от значения.

Установки SET CURRENCY сохраняются с текущей сессией данных.

Пример. В качестве символов валюты устанавливается "руб."

set currency to " руб."
set currency right

set separator to "–"

someMoney = $12345.98

? someMoney picture "999,999.99" function "$"        && Напечатает: 12–345.98 руб.

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

set separator to

Функция

NTOM(nExpression)

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

Пример:

set fixed off

someMoney = Ntom(28.75)

? VarType(someMoney)     && Напечатает: Y

? someMoney                      && Напечатает: 28.7500

? Ntom(28.75678)              && Напечатает: 28.7568

? Ntom(28.75672)              && Напечатает: 28.7567

Функция

MTON(mExpression)

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

Пример:

someNumber = Mton($28.75)

? VarType(someNumber)   && Напечатает: N

? someNumber                    && Напечатает: 28.7500

Функция

FV(nPayment, nInterestRate, nPeriods)

возвращает будущую стоимость инвестиции, образуемую по истечении периода nPeriods, на основе периодических постоянных (равных по величине сумм) платежей и постоянной процентной ставки. Тип результата – Numeric.

Параметры:

nPayment – сумма платежа, производимого в конце каждого периода (может быть как положительной, так и отрицательной).

nInterestRate – процентная ставка; задается не в процентах, а в виде числа от 0 до 1.

Если осуществляются ежемесячные выплаты, а процентная ставка годовая, то при задании значения параметра ее следует разделить на 12.

nPeriods – число периодов осуществления платежей.

Пример (приводится в справке VFP):

store 500 to gnPayment      && Ежегодные платежи

store 0.075/12 to gnInterest   && 7.5% – годовая процентная ставка

store 48 to gnPeriods          && Период 4 года (48 месяцев)

clear

? FV(gnPayment, gnInterest, gnPeriods)   && Напечатает: 27887.93

Функция

PV(nPayment, nInterestRate, nPeriods)

возвращает общий размер периодически осуществляемых инвестиций с учетом процентной ставки. Тип результата – Numeric.

Параметры:

См. описание функции FV( ).

Пример (приводится в справке VFP).

store 500 to gnPayment      && Ежегодные платежи

store 0.075 / 12 to gnInterest && 7.5% – годовая процентная ставка

store 48 to gnPeriods          && Период 4 года (48 месяцев)

clear

? PV(gnPayment, gnInterest, gnPeriods)   && Напечатает: 20679.19

Функция

PAYMENT(nPrincipal, nInterestRate, nPayments)

возвращает сумму уплаты по процентам исходя из размера займа, процентной ставки и числа платежей. Тип результата – Numeric.

Параметры:

nPrincipal – размер займа.

nInterestRate – см. описание функции FV( ).

nPayments – общее число платежей, выполняемых для погашения займа.

Пример (приводится в справке VFP). Рассчитывается размер ежемесячного платежа по процентам, выполняемого по займу, срок погашения которого 20 лет.

store 100000 to gnPrincipal   && Сумма займа

store 0.105 / 12 to gnInterest && 10.5% – годовая процентная ставка

store 20 * 12 to gnPayments  && 20 – число лет погашения займа

pp = Payment(gnPrincipal, gnInterest, gnPayments)

? pp                                    && Напечатает: 998.38

Замечание. Функции FV( ), PV( ) и PAYMENT( ) в качестве первого параметра могут принимать значение типа Currency. При этом результат функции также будет иметь тип Currency, например:

pp = Payment($100000, 0.105 / 12, 20 * 12)

? pp                                    && Напечатает: 998.3799

? VarType(pp)    && Напечатает: Y