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

Откуда: Киев
Сообщений: 225
Добрый день
Нужно заменить значение поля на ближайшее кратное 6-ти, в сторону увеличения.
Скажем, есть значение 122, оно не делится без остатка на 6, ближайшее число, удовлетворяющее условию - 126.
У кого-то есть мысли по этому поводу?
25 авг 09, 18:15    [7579049]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Glory
Member

Откуда:
Сообщений: 104760
kirser
Добрый день
Нужно заменить значение поля на ближайшее кратное 6-ти, в сторону увеличения.
Скажем, есть значение 122, оно не делится без остатка на 6, ближайшее число, удовлетворяющее условию - 126.
У кого-то есть мысли по этому поводу?

Есть мысль, что нужно про алгоритм спросить в форуме по математике.
А уже потом спрашивать про реализацию алгоритма на TSQL
25 авг 09, 18:17    [7579055]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
kirser
Добрый день
Нужно заменить значение поля на ближайшее кратное 6-ти, в сторону увеличения.
Скажем, есть значение 122, оно не делится без остатка на 6, ближайшее число, удовлетворяющее условию - 126.
У кого-то есть мысли по этому поводу?

а почему не 120?
25 авг 09, 18:19    [7579063]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
kirser
Member

Откуда: Киев
Сообщений: 225
Алексей2003

а почему не 120?


надо в сторону увеличения
25 авг 09, 18:20    [7579067]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
declare @n int
set @n = 122
--set @n = 126

select @n / 6 * 6 + sign(@n % 6) * 6 as result

result
-----------
126

(1 row(s) affected)
25 авг 09, 18:21    [7579073]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
declare @n int
set @n = 122

select (@n + 6) / 6 * 6 result


для спящего время бодрствования равносильно сну
25 авг 09, 18:23    [7579078]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
ошибся
declare @n int
set @n = 122

select (@n + 5) / 6 * 6 result

для спящего время бодрствования равносильно сну
25 авг 09, 18:25    [7579091]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
kirser
Member

Откуда: Киев
Сообщений: 225
для int подойдёт на УРА
а для float - никак ?
25 авг 09, 18:27    [7579103]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
чужие решения мне часто нравятся больше чем мои
declare @n float
set @n = 122
--set @n = 126

select (cast(@n as int) + 5) / 6 * 6 result
25 авг 09, 18:29    [7579110]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
declare @n float
set @n = 120.1

select (cast(@n as int) + 5) / 6 * 6 result

для спящего время бодрствования равносильно сну
25 авг 09, 18:36    [7579140]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
kirser
Member

Откуда: Киев
Сообщений: 225
Алексей2003
declare @n float
set @n = 120.1

select (cast(@n as int) + 5) / 6 * 6 result

для спящего время бодрствования равносильно сну


извините, не полностью задачу высветлил.
В моем случае, нужно получить значение, кратное 6 именно в разряде копеек, т.е. имея 120.1 , надо получить 120.6
25 авг 09, 18:41    [7579157]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
таки Glory был прав
сначала Вы нам алгоритм на русском языке напишите
а мы Вам поможем это дело на T-SQL перевести
25 авг 09, 18:45    [7579174]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
kirser
Алексей2003
declare @n float
set @n = 120.1

select (cast(@n as int) + 5) / 6 * 6 result

для спящего время бодрствования равносильно сну


извините, не полностью задачу высветлил.
В моем случае, нужно получить значение, кратное 6 именно в разряде копеек, т.е. имея 120.1 , надо получить 120.6

ну е мае. еще чтонибудь забыли? или так и будем в догони меня кирпич играть?
declare @n float
set @n = 120.1

select cast((cast(@n*100 as int) + 5) / 6 * 6 as float)/100 result
25 авг 09, 18:49    [7579184]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
kirser
Member

Откуда: Киев
Сообщений: 225
да вроде все уже написал:
есть стоимостьтовара - float, к примеру = 120.1 рублей
надо эту цену привести к стоимости, кратной 6-ти в дробной части 2 знаков после запятой
т.е. стоимость должна установиться на 120.12

если стоимость
= 120.10756423, должна установиться в 120.12
= 120.11, должна стать 120.12
= 120.129, должна стать 120.12
третий знак после запятой отсекается, без округления
25 авг 09, 18:55    [7579197]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
а если 120.99 ?
99 не кратно шести!
а куда дальше увеличивать?
25 авг 09, 18:57    [7579206]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
kirser
имея 120.1 , надо получить 120.6
kirser
к примеру = 120.1 рублей
надо эту цену привести к стоимости, кратной 6-ти в дробной части 2 знаков после запятой
т.е. стоимость должна установиться на 120.12
Вы уж определитесь, 120.6 или 120.12
25 авг 09, 18:58    [7579209]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
kirser
Member

Откуда: Киев
Сообщений: 225
Паганель
а если 120.99 ?
99 не кратно шести!
а куда дальше увеличивать?


=121.02
25 авг 09, 18:59    [7579210]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
kirser
Member

Откуда: Киев
Сообщений: 225
Паганель
kirser
имея 120.1 , надо получить 120.6
kirser
к примеру = 120.1 рублей
надо эту цену привести к стоимости, кратной 6-ти в дробной части 2 знаков после запятой
т.е. стоимость должна установиться на 120.12
Вы уж определитесь, 120.6 или 120.12

120.12
25 авг 09, 19:00    [7579218]     Ответить | Цитировать Сообщить модератору
 Re: Кратность значения  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
kirser
Паганель
а если 120.99 ?
99 не кратно шести!
а куда дальше увеличивать?
=121.02
Последний вариант Алексея именно этот результат и выдает
25 авг 09, 19:01    [7579219]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить