Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как выводить один при $amount 0?

М аксим Ученик (90), закрыт 1 год назад
$rand = mt_rand(1, 1000);
if($rand < 150) {
$res = $user->balance - floor($amount);
$restxt = 'Вы проиграли ' . number_format(floor($amount), 0, '', '.') . '$ (x0) ❌';
}
if($rand >= 150 && $rand < 300) {
$res = $user->balance - floor($amount * 0.75);
$restxt = 'Вы проиграли ' . number_format(floor($amount * 0.75), 0, '', '.') . "$ (x0.25) $bad";
}
if($rand >= 300 && $rand < 450) {
$res = $user->balance - floor($amount * 0.5);
$restxt = 'Вы проиграли ' . number_format(floor($amount * 0.5), 0, '', '.') . "$ (x0.5) $bad";
}
if($rand >= 450 && $rand < 600) {
$res = $user->balance - floor($amount * 0.25);
$restxt = 'Вы проиграли ' . number_format(floor($amount * 0.25), 0, '', '.') . "$ (x0.75) $bad";
}

В этом коде работает все, но при $amount = 1 выводится 0.понимаю что это из за округления, но нужно сделать чтобы выводился 1.
(обязательно нужно округлять до меньшего).
Я уже перепробовал все и без толку. пробовал добавлять 1 к переменной если она равна 1, отдельно ее округлял до большего и тд.
Лучший ответ
фигня какая-та Мастер (1002) 1 год назад
ты не описал общую задачу + многие переменные для нас невидимы, трудно тут будет помочь

можно написать свою функцию для округления, которая будет округлять до меньшего только числа, которые больше 1, а иначе будет всегда возвращать 1

по типу:
 function _floor($number) { 
if ($number > 1) return floor($number);
return 1;
}

и соответственно:
 $res = $user->balance - _floor($amount * 0.25);
$restxt = 'Вы проиграли ' . number_format(_floor($amount * 0.25), 0, '', '.') . "$ (x0.75) $bad";

либо самому ставить проверки, что будет громоздко
М аксимУченик (90) 1 год назад
Спасибо
М аксим Ученик (90) М аксим, большое :)
Остальные ответы
Похожие вопросы