Я использую эту функцию, но результат не соответствует ожидаемому
function getyearly($monthly, $yearly)
{
if(!empty($monthly) && $monthly!='0' && !empty($yearly) && $yearly!='0')
{
$permonth = intdiv((int)$yearly, 12);
$monthlytoyear = (int)$monthly*12;
$aftersub = $monthlytoyear - (int)$yearly;
$afterdiv = intdiv((int)$aftersub, (int)$yearly);
// $finaly = (int)$afterdiv*100;
return "$ " . $yearly . "/year ($" . round($permonth) . "/month; save ~" . (int)$afterdiv . "%)";
} else {
return '$ '.$yearly.'/yearly';
}
}
Я получаю ноль (0
).
intdiv()
это неправильный инструмент для этой последней работы.
Результатом деления будет плавание, которое intdiv
преобразуется в 0
,
Код: (демонстрация)
function getyearly($monthly, $yearly) {
if(!empty($monthly) && !empty($yearly)) {
$permonth=intdiv((int)$yearly, 12);
echo "Single payment will feel like 12-monthly payments of: $permonth (" , $permonth *12 . ")\n";
$monthlytoyear=(int)$monthly*12;
echo "Making monthly payments will actually come to: $monthlytoyear\n";
$aftersub = $monthlytoyear-$yearly;
echo "That is a difference of: $aftersub\n";
$afterdiv = $aftersub / $yearly;
echo "In other words, a savings of: " , $afterdiv , "\n";
$finaly=(int)($afterdiv*100);
return "$ ".$yearly."/year ($".round($permonth)."/month; save ~{$finaly}%)";
} else {
return '$ '.$yearly.'/yearly';
}
}
$monthly='60';
$yearly= '480';
echo getyearly($monthly,$yearly);
Выход:
Single payment will feel like 12-monthly payments of: 40 (480)
Making monthly payments will actually come to: 720
That is a difference of: 240
In other words, a savings of: 0.5
$ 480/year ($40/month; save ~50%)
Других решений пока нет …