|
Округление при суммированиии в SELECT
|
|||
---|---|---|---|
#18+
Обычный SELECT к DBF. Все поля нумерик с 3 знаками после запятой. Но если выполняю суммирование типа: SELECT SUM(field) from table INTO ARRAY arr то получаю число, округленное до 2-х знаков. SET DECIMALS TO 3 стоит. Round(SUM(field),3) не помогает. Видимо округление происходит при самом суммировании. Как избавится от этого округления? Или хотя-бы сделать его до 3-х знаков. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 09:43 |
|
Округление при суммированиии в SELECT
|
|||
---|---|---|---|
#18+
Тип field полностью какой? N(???, 3) Сколько знаков в итоговом результате? Попробуй Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 09:55 |
|
Округление при суммированиии в SELECT
|
|||
---|---|---|---|
#18+
Если сумму надо, то не обязательно SELECT делать. Есть команды специальные SUM, COUNT, CALC Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 10:03 |
|
Округление при суммированиии в SELECT
|
|||
---|---|---|---|
#18+
Тип field N(10,3) В итоговом результате 3 дробных знака. Но последний знак округлен Должно получится 1024.543, а округляется до 1024.540 Причем если я произвожу обычное суммирование не в SELECT, то получаю 1024.543 А вот селект упорно выдает 1024.540 К сожалению в данном случае уйти от SELECT я не могу Программа не моя, но мне приходится поддерживать. Даже если там все переделать, что-бы уйти от SELECT, все равно интересно - я никак не могу производить суммирование в селекте, что-бы 3-ий знак после запятой не округлялся? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 10:10 |
|
Округление при суммированиии в SELECT
|
|||
---|---|---|---|
#18+
это не помогло? Код: sql 1.
У меня не получается твою проблему повторить, запусти у себя Код: sql 1. 2. 3. 4. 5. 6. 7.
SET DECIMALS тоже не должно влиять, т.к. это точность при выводе, а не расчете. Ошибка странная и нестандартная. Надо пример повторяющий ошибку, чтобы можно было потестить у себя. В виде кода или DBF-ки с конкретными числами. Как вариант: может дальше в коде округляется? Поставь после селекта Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 10:25 |
|
Округление при суммированиии в SELECT
|
|||
---|---|---|---|
#18+
Eugene7, Округление для отображения чисел может устанавливать команда SET SYSFORMATS ON, если выполняется после SET DECIMALS. Команды SET DECIMALS, SET FIXED, SET SYSFORMATS влияют только на отображение числовых значений, значения переменных не изменяются. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 10:53 |
|
Округление при суммированиии в SELECT
|
|||
---|---|---|---|
#18+
Спасибо всем за помощь Оказалось, что точка тоже занимает 1 знак. Т.е. в N(7,3) один из 7 знаков займет точка. Писалось в ячейку с N(7,3) размером, где последняя цифра просто срезалась. А потом попадало обратно в N(10,3), где последняя цифра становилась равна нулю. Вот такие подводные камни :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:20 |
|
Округление при суммированиии в SELECT
|
|||
---|---|---|---|
#18+
Eugene7Оказалось, что точка тоже занимает 1 знак. Т.е. в N(7,3) один из 7 знаков займет точка. Так и есть, еще знак один разряд займет (для отрицательных). При переполнении происходит округление младших разрядов после запятой. т.е. в N(7,3) влезет от -999999 до 9999999 Именно поэтому я спрашивал про разрядность. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 11:31 |
|
|
start [/forum/topic.php?fid=41&msg=38959447&tid=1582368]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 132ms |
0 / 0 |