Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Неправильно считает проценты


Lilya

Recommended Posts

Здравствуйте!

Подскажите пожалуйста, почему неправильно отображается процент скидки?

 

Товар стоит 6руб. 50коп. Ставим ему скидку 1% и получаем цену 6руб. 44коп. Расчет цены правильный. Но стикер на картинке нам показывает 0%!

 

Товар стоит 6руб. 00коп. Ставим ему скидку 1% и получаем цену 5руб. 94коп. Расчет цены тоже правильный. Но стикер на картинке нам показывает 17%!

 

Т.е. код, который определяет что писать на стикере (в product.tpl) не учитывает значение копеек, а учитывает только значение рублей: если оно не изменилось - то 0%

 

Вот этот код:

<!-- стикер-кружок -->
<?php if ($special) { ?><div style="position: absolute; z-index: 100; width: 60px; height: 60px; font-size: 25px; line-height: 60px; 
            background-color: #F1AC18; border-radius: 50px; color: #fff;" >-<?php echo round((($price) - ($special)) / (($price) / 100)); ?>%</div><?php } ?>

Подскажите, как заставить его видеть еще и копейки (т.е. дробную часть в цене товара)?

Спасибо.

 

Надіслати
Поділитися на інших сайтах


Тут вообще бред написан

 

$price =  6руб. 50коп.

$special = 5руб. 94коп

 

Но что будет в результате вычисления  6руб. 50коп.  -  5руб. 94коп НЕИЗВЕСТНО

 

Поэтому save нужно вычислять в контроллере, на голых числах

Надіслати
Поділитися на інших сайтах

 

Но что будет в результате вычисления  6руб. 50коп.  -  5руб. 94коп НЕИЗВЕСТНО

 

 

 

 

Там там же не просто 6.50-5.94!

Там полный расчет такой   (старая цена-новая цена) / (старая цена:100%)               - так и высчитывается процент от двух чисел. Ну и еще этот round округляет до целых чисел величину скидки (что-бы не 16,67% было, а 17%)

Так что расчет правильный.  Просто он использует для своих вычислений только целые числа цены (только рубли).

 

А формат цены у тебя какой по умолчанию задан?

 

 

Формат у меня задан "белорусские рубли" (BYN) и количество знаков после запятой - 2. Т.е. копейки заданы.

 

Как-то исправляли файл currently.php. Так вот туда вставили (или исправили) такой вот кусок кода:

 if ($format && $currency == 'BYN') {
            $value = round($value, (int)$decimal_place);
            $sign = ($value < 0 ? '-' : '');
            $value = abs($value);
            $rub = floor($value);
            $cop = round(($value - $rub) * 100);
            $string = sprintf('%s%uр.%02uк.', $sign, $rub, $cop);
        }
Змінено користувачем Lilya
Надіслати
Поділитися на інших сайтах



Там там же не просто 6.50-5.94! Там полный расчет такой   (старая цена-новая цена) / (старая цена:100%)               - так и высчитывается процент от двух чисел. Ну и еще этот round округляет до целых чисел величину скидки (что-бы не 16,67% было, а 17%)

Человек не о том говорил, он имел ввиду что нужно считать в контроллере "голые цифры" пока они не превратились в цену, если целое считает, а копейки нет - следовательно предполагаем, что он не видит их, значит, либо некорретный разделитель, например: запятая вместо точки, либо косяк где то раньше.


Как-то исправляли файл currently.php. Так вот туда вставили (или исправили) такой вот кусок кода:

Этот костыль городили для деноминации? Интересное решение если для нее.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.