Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите разобраться с точностью и маштабом  [new]
Doctormom
Member

Откуда:
Сообщений: 48
Добрый день всем!

Совсем запутался и ничего не понимаю с происходящим...
11 янв 17, 16:34    [20094601]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с точностью и маштабом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Написано же английским по-белому все:
https://msdn.microsoft.com/en-us/library/ms190476.aspx
Precision is the number of digits in a number. Scale is the number of digits to the right of the decimal point in a number. For example, the number 123.45 has a precision of 5 and a scale of 2.
11 янв 17, 16:36    [20094612]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с точностью и маштабом  [new]
Doctormom
Member

Откуда:
Сообщений: 48
прошу прошения... отправилось случайно...

Суть такова:

К примеру имеем 2 запроса :
select 58.5846

select 39.2


У первого будет тип numeric(6,4), у второго numeric(3,1)

Если посмотрим далее код :
select sum(58.5846)

select sum (39.2)


То будет соответственно 38,4 и 38,1

А если сделать вот так:
select sum(58.5846)
union all
select sum (39.2)


Тог получаем 38,1 ???? Хотя по идее должны 38,4 ?
11 янв 17, 16:43    [20094654]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с точностью и маштабом  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
Гавриленко Сергей Алексеевич
Написано же английским по-белому все:
https://msdn.microsoft.com/en-us/library/ms190476.aspx
Precision is the number of digits in a number. Scale is the number of digits to the right of the decimal point in a number. For example, the number 123.45 has a precision of 5 and a scale of 2.
А кое-где и русским языком (https://msdn.microsoft.com/ru-ru/library/ms190476.aspx)
11 янв 17, 16:43    [20094661]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с точностью и маштабом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Doctormom
Тог получаем 38,1 ???? Хотя по идее должны 38,4 ?

Если бы вы открыли ссылку, то нашли бы ответ на свой вопрос.

Сообщение было отредактировано: 11 янв 17, 16:44
11 янв 17, 16:44    [20094669]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с точностью и маштабом  [new]
Doctormom
Member

Откуда:
Сообщений: 48
Ну давайте вместе посчитаем по таблице в ссылке.

Нас интересует: precision scale
e1 { UNION | EXCEPT | INTERSECT } e2 max(s1, s2) + max(p1-s1, p2-s2) max(s1, s2)

переменная e1 (38,4), e2 (38,1)

Рассчитываем:
precision
max (4,1) = 4 + max (38-4, 38-1) = 37 == 41 => 38 (максимум)

scale
max(4,1) = 4

Соответственно я ожидаю 38,4... Вот и не понятно откуда 38,1 ?
11 янв 17, 16:51    [20094717]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с точностью и маштабом  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
Doctormom
Вот и не понятно откуда 38,1 ?
Примечание к таблице с формулами читайте.
11 янв 17, 16:53    [20094726]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с точностью и маштабом  [new]
Doctormom
Member

Откуда:
Сообщений: 48
как говориться мелкий текст и не заметил... Всем спасибо!!
11 янв 17, 16:56    [20094742]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить