powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Round баг?
25 сообщений из 27, страница 1 из 2
Round баг?
    #38698063
Artseniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
     select
         sum(price)  A
        ,round(sum(price),2) B
        ,round(sum(price),2)*1.18 C
        ,round(round(sum(price),2)*1.18,3) as round3
        ,round(round(sum(price),2)*1.18,2) as round2
        ,round(round(round(sum(price),2)*1.18,3),2) as round32
        ,round(36.285,2) D
         from sl
    where bill_id=xxx
    group by price
 
A      		B       	C        ROUND3        ROUND2       ROUND32        D
30.753        30.75        36.285        36.285        36.28        36.29        36.29 



ROUND2 возвращает 36.28, а не 36.29
Firebird версия 2.5.1.26351, price тип double precision
Это bug или?
...
Рейтинг: 0 / 0
Round баг?
    #38698074
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtseniyЭто bug или?
Это повод не грузить сервер вычислениями, зависящими от бизнес-логики конкретного приложения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Round баг?
    #38698088
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtseniyДобрый день.

Запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
     select
         sum(price)  A
        ,round(sum(price),2) B
        ,round(sum(price),2)*1.18 C
        ,round(round(sum(price),2)*1.18,3) as round3
        ,round(round(sum(price),2)*1.18,2) as round2
        ,round(round(round(sum(price),2)*1.18,3),2) as round32
        ,round(36.285,2) D
         from sl
    where bill_id=xxx
    group by price
 
A      		B       	C        ROUND3        ROUND2       ROUND32        D
30.753        30.75        36.285        36.285        36.28        36.29        36.29 



ROUND2 возвращает 36.28, а не 36.29
Firebird версия 2.5.1.26351, price тип double precision
Это bug или?
Ну получилось в результате вычисления round(sum(price),2)*1.18 C не ровно 36.285 а 36.2849999...9
(я так думаю)
...
Рейтинг: 0 / 0
Round баг?
    #38698192
Artseniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select 
cast (round(sum(price),2)*1.18 as double precision) as round2
from sl
where bill_id=xxx
group by price

ROUND2
36.285



При округлении 36.2849999...9 до двух знаков все равно должно быть 36.29
...
Рейтинг: 0 / 0
Round баг?
    #38698197
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artseniyprice тип double precisionиспользуй для хранения цен нумерик
ArtseniyЭто bug или?это ССЗБ.
...
Рейтинг: 0 / 0
Round баг?
    #38698199
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtseniyПри округлении 36.2849999...9 до двух знаков все равно должно быть 36.29
Ну, ну
поищи на форуме, тут уже такие предположения утверждения высказывались
...
Рейтинг: 0 / 0
Round баг?
    #38698552
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtseniyПри округлении 36.2849999...9 до двух знаков все равно должно быть 36.29Вы болели, когда в школе проходили округление.
...
Рейтинг: 0 / 0
Round баг?
    #38698564
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovroadsterround - функция банковского округления?Неужели предмет школьной программы???
А по правилам того округления, которое я изучал в школе - будет именно 36,29.

Да, вы что, при округлении 36.2849999...9 до ДВУХ знаков будет 36.28 по школьному округлению.
...
Рейтинг: 0 / 0
Round баг?
    #38698956
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.Пожалуйста, не надо удалять.зачистил флуд на тему школьных оценок, дробей и прочего.

Автору:
Используй для хранения денежных данных ТОЧНЫЙ тип данных, например, нумерик(15,2), тогда округление будет работать ожидаемо. Дабл (а тем более флоат) не рекомендуется для копеек, иначе на этих копейках бухи весь мосх вынесут.
...
Рейтинг: 0 / 0
Round баг?
    #38699417
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyS.G.Пожалуйста, не надо удалять.зачистил флуд на тему школьных оценок, дробей и прочего.

Автору:
Используй для хранения денежных данных ТОЧНЫЙ тип данных, например, нумерик(15,2), тогда округление будет работать ожидаемо. Дабл (а тем более флоат) не рекомендуется для копеек, иначе на этих копейках бухи весь мосх вынесут.

Совет конечно правильный, но от умножения десяти констант подряд не поможет.
Код: sql
1.
2.
cast ( sum ( p.sum_w_nds/(1 + k.nds) )  
       as numeric(15,2) )


не совпадёт с
Код: sql
1.
sum ( cast ( p.sum_w_nds/(1 + k.nds)  as numeric(15,2)) )


и
Код: sql
1.
2.
cast ( sum ( p.sum_w_nds ) 
      /(1 + k.nds) as numeric(15,2) )


а бухгалтерия часто не хочет определятся как ей нужно...
...
Рейтинг: 0 / 0
Round баг?
    #38699473
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81не совпадёт сразумеется, это школьная арифметика, к SQL серверу не имеющая ни малейшего отношения.
NikolayV81а бухгалтерия часто не хочет определятся как ей нужно...проблемы негров шерифа не волнуют.
...
Рейтинг: 0 / 0
Round баг?
    #38699514
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81,

это известная проблема, особенно для контор, в которых покупаются N товаров с НДС. При суммировании возникает уход в НДС на копейку в плюс или минус, и это реально напрягает, потому что в платежке НДС считается автоматом с общей суммы, и он не совпадает с НДС, посчитанным "по позициям".
Одним из вариантов решения является округление цен до таких, которые не дают искажений в НДС 18%.
...
Рейтинг: 0 / 0
Round баг?
    #38699528
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvв платежке НДС считается автоматом с общей суммы, и он не совпадает с НДС,
посчитанным "по позициям".
Потому что считать НДС с общей суммы в вообще-то неправильно. Если в платёжке собраны
товары/услуги с различным НДС, то это приведёт к совершенно неправильному результату, что
чревато боком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Round баг?
    #38699593
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvОдним из вариантов решения является округление цен до таких, которые не дают искажений в НДС 18%.Как сейчас помню по прошлой работе, тендер на пошив нескольких тыс. шинелей. Общая сумма тендера (включая НДС) решительно не делится на кол-во товаров, чтоб получить цену одной шинели кратно целому числу копеек. Поставка была кратно то ли жд контейнеру, то ли кратно одной фуре, потом это требовалось сложить и чтоб сошлось, т.е накладных была приличная такая пачка. А тут ты еще хочешь шоб НДС округлялся одинаково в обе стороны. :)
Ценообразование вообще веселая штука.
...
Рейтинг: 0 / 0
Round баг?
    #38699618
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovkdvв платежке НДС считается автоматом с общей суммы, и он не совпадает с НДС,
посчитанным "по позициям".
Потому что считать НДС с общей суммы в вообще-то неправильно. Если в платёжке собраны
товары/услуги с различным НДС, то это приведёт к совершенно неправильному результату, что
чревато боком.

Не знаю как в России, а у нас насколько помню прописано что считать НДС надо с общей суммы
...
Рейтинг: 0 / 0
Round баг?
    #38699636
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mу нас насколько помню прописано что считать НДС надо с общей суммы
По какой ставке? Или в ваше стране НДС облагается абсолютно всё да ещё и по единой
ставке?.. Или считается общая сумма по каждой группе позиций, потом для каждой группы
считается своя сумма НДС по соответствующей ставке?

Я тоже не знаю как оно там в России, а тут ставок НДС три штуки и на товарных чеках из
супермаркета все группы НДС расписываются отдельно. Счастье, что я накладные не делаю...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Round баг?
    #38699698
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81> Совет конечно правильный, но от умножения десяти констант подряд не поможет.
> не совпадёт с
> и
> а бухгалтерия часто не хочет определятся как ей нужно...
Где-то я это недавно видел... http://www.kolobok.us/smiles/big_standart/hi.gif]

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Round баг?
    #38699719
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovm7mу нас насколько помню прописано что считать НДС надо с общей суммы
По какой ставке? Или в ваше стране НДС облагается абсолютно всё да ещё и по единой
ставке?.. Или считается общая сумма по каждой группе позиций, потом для каждой группы
считается своя сумма НДС по соответствующей ставке?

Я тоже не знаю как оно там в России, а тут ставок НДС три штуки и на товарных чеках из
супермаркета все группы НДС расписываются отдельно. Счастье, что я накладные не делаю...


Ставки налога на добавленную стоимость (НДС) согласно НК:

с 1 января 2011 года до 31 декабря 2014 года включительно ставка налога составляет 20 процентов;

з 1 января 2015 года - 17 процентов.

Ставка 0 процентов применяеться к операциям, определенным в ст. 195 ПК.


Новое в 2014 году:

Введено налогообложение по ставке 7 % для операций по поставке лекарственных средств и изделий медицинского назначения (импорт и поставки производителем).

зы. Есть еще товары освобожденные от НДС
...
Рейтинг: 0 / 0
Round баг?
    #38701629
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсли в платёжке собраны товары/услуги с различным НДС
такого не бывает. НДС облагается продавец, а не товар, поэтому не может быть у одного продавца в одном счете товаров с НДС 10% и 18%.
Софт в РФ, поставляемый по лицензионным договорам без НДС, тоже не может попасть в один счет с товарами с НДС, потому что товары и ПО закрываются разными документами и по разным договорам.
Так что обычно в счете речь идет о товарах или услугах одной категории, которые либо все без НДС, либо все с НДС, причем, с одинаковым НДС.

p.s. допускаю, что бывают крайне экзотические случаи :-)
...
Рейтинг: 0 / 0
Round баг?
    #38701693
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvлибо все с НДС, причем, с одинаковым НДС.контрпример, опять таки по прошлой работе: детская одежда с определенного роста-размера облагается 18%, меньше 10%. обычно бухгалтерия просила склад делать разные накладнушки, но бывали (редко) и исключения, когда покупатель просил явно все одним счетом.
...
Рейтинг: 0 / 0
Round баг?
    #38701710
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

тогда это должна быть специальная форма счета, в которой
а) % НДС должен быть указан для каждой позиции
б) в конце счета должно быть чуть ли не 4 строки - сумма без НДС, НДС %1, НДС %2, полная сумма со всем НДС.
Причем, в платежном поручении штатно требуется выделение НДС и указание его процентной ставки. Так что вероятность счета с товарами с разным НДС я считаю мизерной.

Бывают обратные ситуации, когда дурные бухгалтеры оплачивают несколько разных счетов одной платежкой. Но это уже их личные проблемы.
...
Рейтинг: 0 / 0
Round баг?
    #38703963
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,
нет, вот тут ты не прав. Есть много товаров с ндс 10%, и ни кто не запрещает включать их в один счет с товарами с ндс 18%.
Типовой форма счета нет (ни кто не мешает указывать НДС в каждой строке), а вот типовая форма счет-фактуры есть и там НДС в каждой строке. И на сегодняшний день единственное назначение счет-фактуры - учет НДС.
...
Рейтинг: 0 / 0
Round баг?
    #38703970
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу обсуждения округления, меня всегда удивляют подобные топики, все округления, расчеты сумм по позициям и документам ПОЛНОСТЬЮ прописаны в законах и комментариях. И уже давно там нет ни каких разночтений.
...
Рейтинг: 0 / 0
Round баг?
    #38704100
аптекарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvтогда это должна быть специальная форма счета, в которой
а) % НДС должен быть указан для каждой позиции
б) в конце счета должно быть чуть ли не 4 строки - сумма без НДС, НДС %1, НДС %2, полная сумма со всем НДС.
Причем, в платежном поручении штатно требуется выделение НДС и указание его процентной ставки. Так что вероятность счета с товарами с разным НДС я считаю мизерной.
Работаю в фармации. Товары с 0%, 10%, 18% идут все в одном документе, и никто культурного шока не испытывает.
...
Рейтинг: 0 / 0
Round баг?
    #38704106
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аптекарь> Работаю в фармации. Товары с 0%, 10%, 18% идут все в одном документе, и никто культурного шока не испытывает.
О-о-о!.. Бальзам на моё сердце!..


--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Round баг?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]