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

Откуда:
Сообщений: 227
drop table #t
create table #t (course1 numeric(32,22), course2 numeric(32,22))
insert into #t select 1, 43.0678

declare @a numeric(32, 22)

select @a = 5819809.43236

select course1/course2 * @a from #t
select @a * course1/course2 from #t

Результаты:
135130.155210
135131.337852


Или я что то не понимаю ??? ...

Microsoft SQL Server 2000 - 8.00.2282 (Intel X86) Dec 30 2008 02:22:41 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
20 ноя 09, 15:57    [7957489]     Ответить | Цитировать Сообщить модератору
 Re: Объясните мне данный феномен ... арифметика ...  [new]
Glory
Member

Откуда:
Сообщений: 104760
А 1/3*3 результат должен быть как у 1*3/3 ?

ЗЫ
Уменьшить нужно разрядность аргументов

Сообщение было отредактировано: 20 ноя 09, 16:00
20 ноя 09, 16:00    [7957505]     Ответить | Цитировать Сообщить модератору
 Re: Объясните мне данный феномен ... арифметика ...  [new]
Dimais
Member

Откуда:
Сообщений: 227
select round(course1/course2, 2) * @a from #t
select round(@a * course1/course2, 2) from #t

select round(1.000/3.000*3.000, 2)
select round(1.000*3.000/3.000, 2)

116396.188647
135131.340000

1.00000000000
1.00000000000

Как получить корректные цифры хотя бы до 2-у знаков после запятой ???
20 ноя 09, 16:09    [7957565]     Ответить | Цитировать Сообщить модератору
 Re: Объясните мне данный феномен ... арифметика ...  [new]
aleks2
Guest
Вычисления с округлением - это целая наука. Про это талмуды написаны - читайте.
20 ноя 09, 16:10    [7957575]     Ответить | Цитировать Сообщить модератору
 Re: Объясните мне данный феномен ... арифметика ...  [new]
Glory
Member

Откуда:
Сообщений: 104760
Dimais


Как получить корректные цифры хотя бы до 2-у знаков после запятой ???

Размерность аргументов уменьшать. Потому что от этого напрямую зависят промежуточные результы вычилений
20 ноя 09, 16:10    [7957580]     Ответить | Цитировать Сообщить модератору
 Re: Объясните мне данный феномен ... арифметика ...  [new]
Glory
Member

Откуда:
Сообщений: 104760
А 1.000 и 3.000 это кстати не numeric(32,22)
20 ноя 09, 16:11    [7957587]     Ответить | Цитировать Сообщить модератору
 Re: Объясните мне данный феномен ... арифметика ...  [new]
Dimais
Member

Откуда:
Сообщений: 227
Ну хорошо .... ну а как мне подобрать размерность если значения course1 и course2
могут быть как 1 так и 234562563563.4563475674 ?
20 ноя 09, 16:14    [7957612]     Ответить | Цитировать Сообщить модератору
 Re: Объясните мне данный феномен ... арифметика ...  [new]
Glory
Member

Откуда:
Сообщений: 104760
Dimais
Ну хорошо .... ну а как мне подобрать размерность если значения course1 и course2
могут быть как 1 так и 234562563563.4563475674 ?

float
20 ноя 09, 16:15    [7957614]     Ответить | Цитировать Сообщить модератору
 Re: Объясните мне данный феномен ... арифметика ...  [new]
Dimais
Member

Откуда:
Сообщений: 227
Скажите многоуважаемый Glory .... а Вам памятник при жизни еще не поставили ???
Если нет, то надо поднять тут тему !!!
Спасибо !!!
20 ноя 09, 16:20    [7957652]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить