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

Запрос
Код: 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
16.07.2014, 16:06
    #38698074
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
ArtseniyЭто bug или?
Это повод не грузить сервер вычислениями, зависящими от бизнес-логики конкретного приложения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.07.2014, 16:15
    #38698088
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
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
16.07.2014, 17:25
    #38698192
Artseniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
Код: 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
16.07.2014, 17:27
    #38698197
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
Artseniyprice тип double precisionиспользуй для хранения цен нумерик
ArtseniyЭто bug или?это ССЗБ.
...
Рейтинг: 0 / 0
16.07.2014, 17:28
    #38698199
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
ArtseniyПри округлении 36.2849999...9 до двух знаков все равно должно быть 36.29
Ну, ну
поищи на форуме, тут уже такие предположения утверждения высказывались
...
Рейтинг: 0 / 0
17.07.2014, 08:21
    #38698552
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
ArtseniyПри округлении 36.2849999...9 до двух знаков все равно должно быть 36.29Вы болели, когда в школе проходили округление.
...
Рейтинг: 0 / 0
17.07.2014, 08:56
    #38698564
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
Basil A. Sidorovroadsterround - функция банковского округления?Неужели предмет школьной программы???
А по правилам того округления, которое я изучал в школе - будет именно 36,29.

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

Автору:
Используй для хранения денежных данных ТОЧНЫЙ тип данных, например, нумерик(15,2), тогда округление будет работать ожидаемо. Дабл (а тем более флоат) не рекомендуется для копеек, иначе на этих копейках бухи весь мосх вынесут.
...
Рейтинг: 0 / 0
17.07.2014, 16:40
    #38699417
NikolayV81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
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
17.07.2014, 17:18
    #38699473
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
NikolayV81не совпадёт сразумеется, это школьная арифметика, к SQL серверу не имеющая ни малейшего отношения.
NikolayV81а бухгалтерия часто не хочет определятся как ей нужно...проблемы негров шерифа не волнуют.
...
Рейтинг: 0 / 0
17.07.2014, 17:48
    #38699514
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round баг?
NikolayV81,

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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


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


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