округление — PHP автоматически конвертирует цену в 99, а не в 100

У меня разные цены:

100
550
799
1200
350

Интересно, как я могу автоматически конвертировать их в

99
549
799
1200
349

Я бы просто сделал -1, но некоторые уже верны, как 799, и я не хочу, чтобы это было 798.

Не могу придумать способ сделать это преобразование, я хорош с PHP, но не очень хорошо с математикой. Бьюсь об заклад, нам нужно выяснить, делит ли она на 2, если да, то вычесть 1, если нет, то ничего не делать.

if ($price % 2) {
$price = intval($price) - 1;
}

Это лучший способ сделать это?

2

Решение

Что-то вроде этого?

if(($price % 10) == 0) {
$price--;
}
1

Другие решения

Вы могли бы сделать что-то вроде этого:

if (($price % 50) == 0)
{
$price--;
}

Каждый раз, когда модуль 50 будет равен нулю (это будет иметь место для любого числа, оканчивающегося на «50» или «100»), он удалит единицу.

Измените второе значение (в данном случае 50), если вы хотите нацеливать больше или меньше цен.

2

Так как вы не хотите иметь 798, ваш код не работает

Но вы можете использовать это.

if ($price % 10) {
$price = intval($price) - 1;
}

799 % 2 = 1
800 % 2 = 0
798 % 2 = 0

799 % 10 = 0
800 % 10 = 1
798 % 10 = 0

или% 50, если вы хотите только вычесть 1 из чисел, таких как 750 и 800

1
По вопросам рекламы [email protected]