Употребление типа 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). Рис. 3.2. Фрагмент вкладки Regional Выполнение SET CURRENCY TO восстанавливает заданный по умолчанию символ валюты. LEFT – (по умолчанию) позиционирует символ валюты слева от значения. RIGHT – позиционирует символ валюты справа от значения. Установки SET CURRENCY сохраняются с текущей сессией данных. Пример. В качестве символов валюты устанавливается "руб." set currency to " руб." 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 |