| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > формула в запрос |
| Автор: bars80080 7.5.2009, 17:09 | ||
| товарищи, есть таблица с такими полями: tarif float(12,2), komm float(12,2) требуемо обновить значения в ней одним запросом по следующей формуле: komm = tarif * $procent, где $procent - число типа 0,037 проблема в округлении. вопрос таков - округлит ли до двух знаков mysql число по правилам? если да, то верен ли запрос:
|
| Автор: gta4kv 7.5.2009, 17:37 |
| А не легче это просто протестировать? |
| Автор: bars80080 7.5.2009, 18:35 |
| да это я просто в запарке был. помятуя о случае, когда долго боролся с replace то и запостил вопрос, чтоб если что но, из-за того что в город вводят войска, конец рабочего дня сместили и всё-таки переместили решение задачи на завтра |
| Автор: solenko 8.5.2009, 09:24 |
| http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_round по религиозным причинам отпадает? ) |
| Автор: bars80080 8.5.2009, 10:30 | ||||
| нет, совешенно не отпадает. религия ждёт откровения собсна, может round и подошла бы, ибо
даёт 155.03 однако в запросе обновления:
получаем в итоге 155.02 по факту, такой результат я получаю и без использования round, т.к. ячейка komm - float(12,2) и там автоматом округляется вот такие вот пироги |
| Автор: ksnk 8.5.2009, 10:36 |
| bars80080, Дела денежные, imho, требуют целочисленной арифметики. Правильнее держать деньги не в float'е, нарываясь на странные и непредсказуемые округления, а в целых (копейках, центах). Да и бухгалтерские округления иногда отличаются от арифметических... |
| Автор: bars80080 8.5.2009, 11:37 |
| ну, в этом ключе можно далеко зайти. остатки от деления копеек тоже ведь куда-то должны деваться? получается можно и обогатиться. впрочем, я не банковскую прогу пишу, а отчётность. в крайнем случае, все нестыковки можно утрясти через взаимные претензии. считать просто удобнее. однако, возьмём на заметку для будущих свершений |
| Автор: ksnk 8.5.2009, 14:50 |
| 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 рублёвой сделки - чистая и необлагаемая налогом прибыль предприятия Впрочем, такие финты уже давно описаны в бухгалтерских документах. Бухгалтерия - штука точная... |