Округление числа в PHP

95
07 января 2021, 12:50

Есть плагин, который выводит цену в формате: базовая цена - %скидки = цена со скидкой. Очень часто цена выводится с копейками, т.е. 254.04, 340.98, 5401.69. Как округлить целую часть, убрать копейки? Заранее спасибо за помощь.

elseif (!empty($page_data['page_price_discount']) AND $page_data['page_price_discount']>0 AND empty($page_data['page_price_BYR_discount']))
{
    $temp_array['PRICE_BYR_DISCOUNT']
        = round($page_data['page_price_BYR'] - ($page_data['page_price_BYR'] * $page_data['page_price_discount'] / 100), 2);
}
elseif (!empty($page_data['page_price_discount']) AND !empty($page_data['page_price_BYR_discount']))
{
    switch ($cfg['plugin']['currency']['discount'])
    {
        case 'percent':
            $temp_array['PRICE_BYR_DISCOUNT']
                = round($page_data['page_price_BYR'] - ($page_data['page_price_BYR'] * $page_data['page_price_discount']
                    / 100), 2);
            break;
        case 'price':
            $temp_array['PRICE_DISCOUNT']
                = 100 - round($page_data['page_price_BYR_discount'] / $page_data['page_price_BYR'] * 100, 0);
            break;
        default:
            break;
    }
}
Answer 1
    case 'percent':
        $temp_array['PRICE_BYR_DISCOUNT']
            = round($page_data['page_price_BYR'] - ($page_data['page_price_BYR'] * $page_data['page_price_discount']
                / 100), 2);
        break;

Видите этот участок кода? Условие "percent" он выводит Вам решение с копейками. И в этом участке код тоже самое:

 $temp_array['PRICE_BYR_DISCOUNT']
    = round($page_data['page_price_BYR'] - ($page_data['page_price_BYR'] * $page_data['page_price_discount'] / 100), 2);

Потому что round() задан с аргументом вывода десятичных.

  , 2);

Замените эту двойку на ноль, и десятичные пропадут. Результат замены:

elseif (!empty($page_data['page_price_discount']) AND $page_data['page_price_discount']>0 AND empty($page_data['page_price_BYR_discount']))
{
    $temp_array['PRICE_BYR_DISCOUNT']
        = round($page_data['page_price_BYR'] - ($page_data['page_price_BYR'] * $page_data['page_price_discount'] / 100), 0);
}
elseif (!empty($page_data['page_price_discount']) AND !empty($page_data['page_price_BYR_discount']))
{
    switch ($cfg['plugin']['currency']['discount'])
    {
        case 'percent':
            $temp_array['PRICE_BYR_DISCOUNT']
                = round($page_data['page_price_BYR'] - ($page_data['page_price_BYR'] * $page_data['page_price_discount']
                    / 100), 0);
            break;
        case 'price':
            $temp_array['PRICE_DISCOUNT']
                = 100 - round($page_data['page_price_BYR_discount'] / $page_data['page_price_BYR'] * 100, 0);
            break;
        default:
            break;
    }
}

Подробное описание функции round() можно изучить по этой ссылке.

Творческих успехов Вам.

Answer 2

echo floor(340.98);

Результат: 340

Answer 3

Я туповат. Решение простейшее Подставил round перед ($page_data['page_price_BYR'] * $page_data['page_price_discount'] / 100)

{
    $temp_array['PRICE_BYR_DISCOUNT']
        = round($page_data['page_price_BYR'] - round($page_data['page_price_BYR'] * $page_data['page_price_discount'] / 100), 2);
}
READ ALSO
php Конвертация ресурса GD в ImageMagick и обратно

php Конвертация ресурса GD в ImageMagick и обратно

Есть код написанный с использованием GD для обработки изображенийПроблема в том, что возможностей GD не хватает, поэтому хочется дополнительно...

97
Не обновляются стили, сайт на Yii2

Не обновляются стили, сайт на Yii2

Меняю стили на сайте, через фтп сразу правлю, потом захожу через файлзиллу проверяю,изменения сохранились, но на сайте изменений нету,в браузере...

89
Модальные окна и php

Модальные окна и php

Хочу сделать отзывчивый пользовательский интерфейсЕсть форма, которая собирает данные, отправляет на сервер

117
Синхронизация баз MySql

Синхронизация баз MySql

У меня есть серверНа нем крутится сайт с базой (глобальный)

107