powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ROUND в sql
7 сообщений из 7, страница 1 из 1
ROUND в sql
    #36119703
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с таком эффектом работы функции округления:
Код: plaintext
select ROUND(sum("Count"), 3 ) from PrActivity_SalesMgmt_Data.SalesItems
возвращает 8334123.8459999999031. Как видно округления нет. (Поле Count - %Double.)
В тоже время:
Код: plaintext
select ROUND( 8334123 . 8459999999031 , 3 ) from PrActivity_SalesMgmt_Data.SalesItems
возвращает 8334123.846

Может кто сталкивался и знает как обойти?
...
Рейтинг: 0 / 0
ROUND в sql
    #36120138
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип поля "Count" - %Double
Тип поля "8334123.8459999999031" - %Numeric
Функция round входной аргумент неявно приводит к типу %Numeric.

Отсюда:
Код: plaintext
1.
2.
3.
4.
select 
ROUND(CAST(sum("Count") AS NUMERIC( 19 , 12 )), 3 ), -- или
ROUND(sum("Count")||' ', 3 )
from PrActivity_SalesMgmt_Data.SalesItems
...
Рейтинг: 0 / 0
ROUND в sql
    #36120432
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Спасибо огромное.
...
Рейтинг: 0 / 0
ROUND в sql
    #36122443
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, почему count не может преобразовать входные данные к %Numeric сам?
Чем различаются эти типы?
Я понимаю C++, там разные типы данных подразумевают разное хранение, но в каше, где строка и числа часто хранятся одинаково, это странно (и то в С++ идет автопреобразование типа где нужно).
...
Рейтинг: 0 / 0
ROUND в sql
    #36125257
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, как это объясняется в документации .
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ROUND в sql
    #39142171
Никола123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. А подскажите пожалуйста.
Версия 2013.1.
В классе свойство:
Property Weight As %Double(SCALE = 2);
Через SQL то всё ок, заглядываю в глобал, а там $double(3.7999999999999998223) (а сохранял просто 3.8), откуда эта магия? =)
...
Рейтинг: 0 / 0
ROUND в sql
    #39142281
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никола123 ,
Код: plaintext
1.
2.
3.
USER>w $double(3.8)
3.7999999999999998223
USER>w $decimal(3.7999999999999998223,2)
3.8
Numeric Computing in InterSystems Applications
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ROUND в sql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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