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

Откуда:
Сообщений: 1
Добрый вечер.
Подскажите, как можно посчитать произведение вещественных чисел?
2 июл 15, 22:51    [17846172]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать произведение вещественных чисел  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2676
select 121.32 * 222.78
2 июл 15, 22:53    [17846182]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать произведение вещественных чисел  [new]
Добрый Э - Эх
Guest
Dima_Narzerov,

вспоминая курс школьной математики:
with
  t as
    (
      select *
        from (
               values (4), (2.5), (1.5), (2)
             ) v(n)
    )
select exp(sum(log(n)))
  from t
Ну и про ограничения на входные значения забывать не стоит (отрицательные значения, ноль, ограничение по точности).
3 июл 15, 04:09    [17846580]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать произведение вещественных чисел  [new]
Добрый Э - Эх
Guest
Добрый Э - Эх,

причем ограничения на входные значения (0, отрицательные числа) относительно легко обходятся. А вот точность получаемого результата, к сожалению, повысить не выйдет.
3 июл 15, 04:25    [17846582]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать произведение вещественных чисел  [new]
МожноИТак
Guest
declare @res int
set @res = 1

;with
t as
(
select *
from (
values (4), (2.5), (1.5), (2)
) v(n)
)
select @res = @res * n
from t

select @res
3 июл 15, 11:56    [17847743]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать произведение вещественных чисел  [new]
Добрый Э - Эх
Guest
ещё как вариант - рекурсивный CTE.
3 июл 15, 12:14    [17847858]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать произведение вещественных чисел  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Однако, важен и порядок перемножения сомножителей.
Чтобы промежуточные результаты не приводили к переполнению.
3 июл 15, 12:18    [17847873]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать произведение вещественных чисел  [new]
borodin_andrei
Member

Откуда:
Сообщений: 5
with
t as
(
select *
from (
values (4), (2.5), (1.5), (2)
) v(n)
)
select top 1
f.n * lead(f.rn, 1, 1) over(order by f.n desc) rn
from (
select n, n * lead(n, 1, 1) over(order by n desc) rn
from t
) f
order by f.n desc
3 июл 15, 15:29    [17849350]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать произведение вещественных чисел  [new]
МожноИТак
Guest
borodin_andrei, это пример ошибочной реализации
3 июл 15, 16:05    [17849626]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить