|
|
|
| Здравствуйте. Пожалуйста, помогите оптимизировать функцию. Её смысл заключается в следующем: она получает прямой и обратный курсы, сумму обмена, комиссию платежной системы и исходя из этого высчитывает прибыль. Прибыль высчитывается по такой формуле: разность между курсами умноженая на сумму и минус комиссия которую оплатили при отправке денег.
Следует учесть, что если сумма которую отправили меньше или равна еденице, то комиссия составляет 0.01. Дело в том что направления разные и ещё пришлось IF делать, но я уверен что можно и без него математически посчитать.
Когдато встречал уже готовую формулу которая высчитывает это, но некак немогу её найти. Пожалуйста, помогите на основе этого кода сделать единую формулу. Заранее спасибо.
Обратите внимание, что функция должна принимать параметр типа bool который означает показывать в валюте которую дают или которую получают.
function calculate_income( $direct_course,$reverse_course,$amount,$commission=0.8 )
{
# Ф У Н К Ц И Я Д Л Я П О Д С Ч Е Т А П Р И Б Ы Л И С О Б М Е Н А
# Принимает следующие аргументы: прямой курс, обратный курс, сумма обмена, [комиссия платежной системы].
# Возвращает: прибыль с обмена.
if( $direct_course<1 )
{
return (($reverse_course-(1/$direct_course))/2*$amount)-((1/$direct_course)*$amount*$commission/100);
}
else
{
return ((((($direct_course-(1/$reverse_course))/2)/$direct_course)*$amount)/$direct_course)-($amount/$direct_course*$commission/100);
}
}
|
Пример расчетов:
К примеру меняем доллары на рубли по курсу 1 WMZ = 30 WMR, а обратный курс 31 WMR = 1 WMZ. Меняют сумму в размере 10 WMZ.
Получаем данные:
Прямой курс: 1/30 = 0.03333
Обратный курс: 31/1 = 31
Сумма: 10
Прибыль на еденице обмена = (31-30)/2 = 0.5 WMR.
Прибыль с учетом суммы обмена = 0.5*10 = 5 WMR.
Комиссия = 10*30*0,008 = 300*0,008 = 2.4 WMR.
Общая прибыль = 5 - 2.4 = 2.6 WMR.
Обратите внимание, что прибыль выражена в валюте которую получают. Чтоб выразить в валюте которую дают нужно 2.6/30 = 0.0866666667 WMZ.
Если производить по этойже формуле обмен обратный то числа уже далеко не те. | |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 19:27)
| | Попытался воплотить вторую идею вроде как счетает, но правильно или нет не знаю.
function calculate_income( $direct_course,$reverse_course,$amount,$commission=0.8,$showgot=true )
{
# Ф У Н К Ц И Я Д Л Я П О Д С Ч Е Т А П Р И Б Ы Л И С О Б М Е Н А
# Принимает следующие аргументы: прямой курс, обратный курс, сумма обмена, [комиссия платежной системы], [показать в валюте на которую получают].
# Возвращает: прибыль с обмена.
if( $direct_course<1 )
{
$income = (($reverse_course-(1/$direct_course))/2*$amount)-((1/$direct_course)*$amount*$commission/100);
}
else
{
$income = ((((($direct_course-(1/$reverse_course))/2)/$direct_course)*$amount)/$direct_course)-($amount/$direct_course*$commission/100);
}
return ($showgot==true ? $income : $income/$reverse_course);
}
|
| |
|
|
|
|
|
|
|
для: pavluxa09
(11.04.2010 в 19:27)
| | совсем необязательно формулу пытаться записать именно в одну строку. | |
|
|
|