Как окргулить цену? (вместо 157 руб например 150 или 160)

Статус
В этой теме нельзя размещать новые ответы.

sounde

Гуру форума
Регистрация
12 Сен 2008
Сообщения
390
Реакции
64
Привет всем!
Знаю, что похожая тема была, в ней попутно и копейки обрезали, но именно сделать округления так и не получилось :(
Что нужно: самое главное, чтобы цена всегда заканчивалась на 0, т.е. пример: цена 157 руб, мне нужно чтобы была 150 или 160 руб, лучше конечно в сторону увеличения, но как получиться.
Т.е округлить нужно до целых десятков.
Как бы это реализовать?
Я готов заплатить за решение.
 
а в чем исчисляете и скоко валют? навтирину вывести легко, а по заказу и базе чтоб шло труднее
 
Валюта только рубли,лучше чтобы в базу, так как при заказе же будет учитыватся и покупатель может возмутиться, что цена на витрине одна ,а при оформлении покупки стала выше.
 
может перед записью в базу дели сумму на 10. что было 157 / 10 = 15.7. Потом округляй до целого числа 16.0. Снова умножь на 10. Получишь 160. так и пиши

$price = 10 * ceil($price / 10);

ну в базу соответственно
UPDATE tovar SET price = $price
 
в пхпмайадмин выполнить запрос -
UPDATE `SS_products` SET `Price`=ROUND(`Price`,-1), `list_price`=ROUND(`list_price`,-1)

154 станет 150, а 155 уже 160
исправятся все нынешние цены. потом если не часто обновляетесь то повторять по мере надобности, а если часто то спрашивайте.
 
собственно при составлении mysql тоже можно использовать ceil или ceiling. Они округляют в большую сторону.
 
топикстартеру нужно чтобы при смене курса валюты менялась цена, соответственно округленная до ближайшего большего/меньшего
если он так постоянно будет обновлять в совокупности с изменением курса, то потихоньку цена уплывет, цена округлиться, запишется в БД, потом изменится курс, цена опять округлится и снова пропишется в БД, и так пока цена не перестанет соответствовать действительной стоимости.
теоретечески ему надо округлять цену не в самой БД, а непосредственно при выводе цены и подсчете заказа.
 
round (PHP 3, PHP 4)

round - округляет число с плавающей точкой/float.

Описание
float round (float val [, int precision])

Возвращает значение числа val, округлённое до специфицированной точности precision (количество цифр после десятичной точки). precision может быть также отрицательным или нулём (по умолчанию).

Предупреждение!
PHP по умолчанию не обрабатывает корректно строки вроде "12,300.2". См. конвертация из строк.


echo round(3.4); // 3
echo round(3.5); // 4
echo round(3.6); // 4
echo round(3.6, 0); // 4
echo round(1.95583, 2); // 1.96
echo round(1241757, -3); // 1242000



Примечание: параметр precision доступен только в PHP 4.

См. также ceil() и floor().

От себя скажу головняк..однако..будет.. в том варианте в котором есть в SS цены
 
теоретечески ему надо округлять цену не в самой БД, а непосредственно при выводе цены и подсчете заказа.
это наверное не самый оптимальный вариант. проще прогнать цены в БД раз и навсегда. Чтоб они гарантированно не "уплывали" добавьте условие
WHERE MOD(price, 10) > 0
P.S. если память не изменяет то так. Суть в том чтоб изменять цены там где остаток от деления цены на 10 не равен нулю. для случая округления до десятков.
 
Спасибо всем за советы!
Если честно, то сам врядли сумею вставить эти фрагменты, которые вы все написали правильно в скрипт магазина :(
PHP язык знаю процентов так на 20.
Незнаю отказаться от идеи округления или нет..
В основном просто хотел с окргулением заморочится только из-за того, что напрмер вот смотрите покупатель выбрал три товара со стоимостью: 170, 120 и 340 руб, ему легче прикинуть итоговоую сумму сразу же в уме будет, да и смортится акуратнее, чем например: 171, 123, 344.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху