Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> формула в запрос 
:(
    Опции темы
bars80080
Дата 7.5.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



товарищи, есть таблица с такими полями: tarif float(12,2), komm float(12,2)

требуемо обновить значения в ней одним запросом по следующей формуле: komm = tarif * $procent, где $procent - число типа 0,037
проблема в округлении. вопрос таков - округлит ли до двух знаков mysql число по правилам?

если да, то верен ли запрос:

Код

'... set komm=tarif*'.$procent.' where ...';

PM MAIL WWW   Вверх
gta4kv
Дата 7.5.2009, 17:37 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



А не легче это просто протестировать?
PM MAIL   Вверх
bars80080
Дата 7.5.2009, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



да это я просто в запарке был. помятуя о случае, когда долго боролся с replace то и запостил вопрос, чтоб если что
но, из-за того что в город вводят войска, конец рабочего дня сместили и всё-таки переместили решение задачи на завтра

PM MAIL WWW   Вверх
solenko
Дата 8.5.2009, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



ROUND по религиозным причинам отпадает? )


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
bars80080
Дата 8.5.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



нет, совешенно не отпадает. религия ждёт откровения

собсна, может round и подошла бы, ибо
Код

select round(3445*0.045, 2)

даёт 155.03

однако в запросе обновления:
Код

update `table` set `pcom`=4.5, `komm`=round(tarif*0.045, 2), `selpcom`=0 where blanc=20 and datesale>1241125200 and datesale<1241816399 and ak=143

получаем в итоге 155.02
по факту, такой результат я получаю и без использования round, т.к. ячейка komm - float(12,2) и там автоматом округляется

вот такие вот пироги
PM MAIL WWW   Вверх
ksnk
Дата 8.5.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 14
Всего: 386



bars80080, Дела денежные, imho, требуют целочисленной арифметики. Правильнее держать деньги не в float'е, нарываясь на странные и непредсказуемые округления, а в целых (копейках, центах). Да и бухгалтерские округления иногда отличаются от арифметических...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 8.5.2009, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



ну, в этом ключе можно далеко зайти. остатки от деления копеек тоже ведь куда-то должны деваться? получается можно и обогатиться.
впрочем, я не банковскую прогу пишу, а отчётность. в крайнем случае, все нестыковки можно утрясти через взаимные претензии.

считать просто удобнее. однако, возьмём на заметку для будущих свершений
PM MAIL WWW   Вверх
ksnk
Дата 8.5.2009, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 14
Всего: 386



bars80080, Ну да. К примеру, товар в корзинку грузит покупатель. Нагрузил 10 наименований и выписывает счет.
НДС с суммы  сделки - 18% магазин обязан выплатить государству. А можно начислять НДС не с суммы сделки, а с каждого товара по отдельности, а потом их всех суммировать. Таким образом, появляется элегантная возможность использовать цены вида "1 рупь 97 копеек" для вполне законного обувания государства.

1.97*0.18 ~ 35 копеек, в то время как 1.98*0.18 = ~ уже 36 копеек. Если купить 10 таких товаров, то по одной схеме расчета получится
НДС(10*1.97)=3.55 руб, по другой формуле 10*(НДС(1.97))=3.50 руб. 5 копеек с ~20 рублёвой сделки - чистая и необлагаемая налогом прибыль предприятия smile

Впрочем, такие финты уже давно описаны в бухгалтерских документах. Бухгалтерия - штука точная...  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0711 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.