Округлить метку товара "Скидка -%"

Тема в разделе "Общие вопросы", создана пользователем Jess23, 4 сен 2015.

  1. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Доброго времени!

    Подскажите каким образом можно округлить/отображать иконку скидки, например у меня есть товар я ставлю определенную цену на него, потом делаю акцию уже с новой ценой, получаю скидку -51%.

    Каким образом сделать чтобы отображать не -51% а 50%, то есть округлить это значение.

    Любые варианты готов выслушать.

    P/S: Или писать точную цену с мелочью после чего делать акцию с ценой в которой есть мелочь после чего скрыть вывод знака цены после запитой.... - Это единственный вариант?
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.151
    Симпатии:
    1.004
    вроде как такового округления нет до десятков. Но можно тупо последнюю цифру заменить на 0. Если последняя цифра больше 5, то меняем последнюю на 0 и первую прибавляем +1.
     
  3. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    У меня такая же мыслшика есть, только где рыть не подскажите?
     
  4. Vlad

    Vlad Эксперт

    Сообщения:
    4.151
    Симпатии:
    1.004
    в смысле?? У меня в шаблоне по умолчанию нет процентов. У вас они есть. Видимо переменная находится в шаблоне.

    Вот еще вариант, думаю понятен.
    PHP:
    $skidka 51;
    echo 
    round($skidka/10) * 10
     
    Jess23 нравится это.
  5. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Туплю..., я сижу на альтернативном сейчас шаблоне, и дефолтный не очень изучал, тут такая штука как скидка есть из-за этого подумал что и на дефолте то же...

    Спасибо.
     
  6. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Решил проблему импортируя цену с копейками в итоге получаю правильную скидку. Если копейки мешают, можно убрать цифры после точки в настройках.
     
  7. Vlad

    Vlad Эксперт

    Сообщения:
    4.151
    Симпатии:
    1.004
    ну и зря. Решение указанное выше вполне хорошее..
     
  8. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Не спорю оно идеальное!
    Можно будет немного поправить=)
     
  9. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Забираю свои слова назад, решил вернутся до вашего решения, помогите пожалуйста реализовать такую штуку, у меня есть функция:
    PHP:
    'saving'      => $result['price'] == 100 round((($result['price'] - $result['special'])/$result['price'])*1000)
    А таким образом я это вывожу:
    HTML:
    <span class="saving">-<?php echo $product['saving']; ?>%</span>
    Каким образом сделать так чтобы процент который получался на выходе был: 10, 15, 20, 25...

    Например, если значение на выходе около 77 = 75.
     
  10. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    PHP:
    'saving'      => $result['price'] == 100 round((($result['price'] - $result['special'])/$result['price'])*1002)
    PHP_ROUND_HALF_DOWN - это работает только отображает очень много знаков после запятой.

    Пример: (27-20/27)*100 = 25,93%
    Таким образом все считает правильно, только как скрыть последние значение после запятой?
     
    Последнее редактирование: 23 сен 2015
  11. Vlad

    Vlad Эксперт

    Сообщения:
    4.151
    Симпатии:
    1.004
    У данной функции вторым аргументом как раз количество знаков после запятой.
     
  12. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    PHP:
    'saving'      => $result['price'] == 100 floor((($result['price'] - $result['special'])/$result['price'])*100)
    Так работает, сейчас протестирую конечно. Ну вроде все в поряде.
     
  13. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Работает но не так как нужно.

    Я не могу получить точный процент на некоторых товарах. Подскажите как правильно написать вот такой момент:
    PHP:
    floor((($result['price'] - $result['special'])/$result['price'])*100)
    Другими словами отнимаю 15%, пример: (49-41.65/49)*100=15% - все верно.
    Но каким образом сделать так, чтобы когда я считаю: (49-42/49)*100=14% - это отображалось как 15%.

    Как правильно округлять, чтобы получать правильный процент?

    Я перепробовал разные подходы: round(), ceil(), floor()... Не могу сообразить, помогите разобраться.
     
  14. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    если у вас кратное пяти, то проще будет так: 14/5=2,8
    5 * round(2,8) = 15%
    Это я схематично...;)
     
    my2you нравится это.
  15. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Так, я что-то не могу понять каким образом мне тогда подгонять процент к формуле, если я только этой формулой считаю нужный мне процент...

    Или возможно я вас не очень понял.
     
  16. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    А так поймете?)))
    PHP:
    'saving' => $result['price'] == 100 round(((($result['price'] - $result['special'])/$result['price'])*100)/5)*5
     
  17. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Я понял суть, но так не катит. Я все равно получаю не то значение которое мне нужно, мне кажется ваш способ отобразить такое же самое значение как получаю я. Другими словами, то же самое что было изначально.
     
  18. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    :D
    round((((49 - 42) /49)*100)/5)*5 - сколько будет?
     
    Jess23 нравится это.
  19. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Йо-майо, я вас понял, я неправильно посмотрел, неправильно после этого сообразил, после чего неправильно написал формулу и в итоге получил тоже значение....

    Все верно, я получаю 15%. Все работает. Сейчас все пересмотрю, но мне кажется это решение есть верным!

    На самом деле, извините ещё раз за то что не досмотрел.:rolleyes:.
     
  20. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    Причем Vlad выше уже написал эту же формулу, только кратную 10.