Re: Философский вопрос про 3й диалект

2007-12-25 Пенетрантность Konstantin R. Beliaev


Андрей Иванов wrote:


Делишь на целое получишь цело.
Подели на 10.0


...получишь NUMERIC(х,1)
Дык, в том-то и дело, что в общем случае в результате деления получается 
бесконечная дробь.




Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Dmitri Kuzmenko


Hello, Konstantin!

Konstantin R. Beliaev wrote:


Интересно, а почему все-таки в 3м диалекте деление целого на целое дает 
тоже целое? Что сподвигло на такую модификацию?

Или причина сего решения погребена в архивах Борланда?


http://www.ibphoenix.com/main.nfs?a=ibphoenixpage=ibp_60_exact_num_fs

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34




Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Konstantin R. Beliaev


Dmitri Kuzmenko wrote:


http://www.ibphoenix.com/main.nfs?a=ibphoenixpage=ibp_60_exact_num_fs

The scales of these operation _except_division_ are specified by the 
SQL standard. The standard makes the precision of all these operations, 
and the scale of divison, implementation-defined: we define the 
precision as 18, and the scale of division as S1+S2, the same as is 
required by the standard in the case of multiplication.


Блин, ну нафига было к делению применять правило, определенное для 
умножения... :-((




Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность PEAKTOP
 Блин, ну нафига было к делению применять правило, определенное для
 умножения... :-((

Потому, что на уровне инструкций процессора ЭВМ умеет только
прибавлять и умножать. Опреации деления и вычитания получаются путем
математических преобразований над этими операциями (прибавление числа
со знаком или умножение на число в минус первой степени).

Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Dmitri Kuzmenko


Hello, Konstantin!

Konstantin R. Beliaev wrote:


http://www.ibphoenix.com/main.nfs?a=ibphoenixpage=ibp_60_exact_num_fs

The scales of these operation _except_division_ are specified by the 


 Блин, ну нафига было к делению применять правило, определенное для
 умножения... :-((

у тебя проблемы с английским - не то читаешь

Results of / and AVG

All arithmetic operations in dialect 3 produce the results, and the 
types of results, called for by the SQL-92 standard, which in some cases 
are not what customers have learned to expect in previous releases of 
InterBase. The most serious potential problems for a customer migrating 
from V5 or earlier to V6 involve the division operator and the AVG 
function (which also implies division) with operands of exact numeric types.


If at least one operand of a division operator has an approximate 
numeric type (FLOAT, REAL, or DOUBLE PRECISION) then the result of the 
division will be DOUBLE PRECISION, and will be exactly the same as that 
produced in V5 by division on any operand types. However, if both 
operands of a '/' operator have any exact numeric types, the result will 
be exact numeric with scale equal to the sum of the scales of the operands.


--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34




Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Alex Cherednichenko

Привет, PEAKTOP!
Вы пишешь  24 декабря 2007:

  Блин, ну нафига было к делению применять правило, определенное для
  умножения... :-((

 P Потому, что на уровне инструкций процессора ЭВМ умеет только
 P прибавлять и умножать. Опреации деления и вычитания получаются путем
 P математических преобразований над этими операциями (прибавление числа
 P со знаком или умножение на число в минус первой степени).

Оно так было.
Когда-то...
Давно...
Очень.

-- 
With best regards, Alex Cherednichenko.




Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Konstantin R. Beliaev


Kovalenko Dmitry wrote:

Вообще, конечно, поздновато ты проснулся. Бугага.


Просто момент подходящий подвернулся для перехода



Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Konstantin R. Beliaev


Dmitri Kuzmenko wrote:


у тебя проблемы с английским - не то читаешь


Уверен что у меня?
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
6.12  numeric value expression
1) If the data type of both operands of a dyadic arithmetic opera-
   tor is exact numeric, then the data type of the result is exact
   numeric, with precision and scale determined as follows:
...
c) The precision of the result of multiplication is implementation-
   defined, and the scale is S1 + S2.
d) The precision and scale of the result of division is
   _implementation-defined_ .

Т.е. определяется _производителем_ , а отнюдь не стандартом SQL-92 !

PS. Я понимаю, что выступать поздно, просто как-то коряво везде писать 
CAST() при делении и вычислении AVG(). Может, конечно, все уже привыкли?




Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Dmitri Kuzmenko


Hello, Konstantin!

Konstantin R. Beliaev wrote:


Т.е. определяется _производителем_ , а отнюдь не стандартом SQL-92 !


да, и в 2002-ом стандарте то же самое.

PS. Я понимаю, что выступать поздно, просто как-то коряво везде писать 
CAST() при делении и вычислении AVG(). Может, конечно, все уже привыкли?


гм. я среднее значение от множества целых чисел представляю себе 
исключительно как ЦЕЛОЕ ЧИСЛО.

Может, в консерватории что?

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34




Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Карабас Барабас
Hi, Владимир Аксенов.

 ВА [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 ВА (1+2+3+4+5+6+7+8+9+10)/10=5,5

 ВА Что не так?

[2,3,5]

(2+3+5)/3 = 3.333 или 3.333 ?

--

Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Андрей Иванов


Владимир Аксенов пишет:

(1+2+3+4+5+6+7+8+9+10)/10=5,5

Что не так?


Делишь на целое получишь цело.
Подели на 10.0

--
  Успехов, Андрей Иванов.



Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность Андрей Иванов


Карабас Барабас пишет:

[2,3,5]

(2+3+5)/3 = 3.333 или 3.333 ?

равно просто 3

--
  Успехов, Андрей Иванов.



Re: Философский вопрос про 3й диалект

2007-12-24 Пенетрантность PEAKTOP
 Оно и сейчас так. Только из кода переместилось в микрокод процессора. И уже
 не на уровне инструкций процессора, а на уровне его же микроинструкций.

Да оно много чего переместилось. Сейчас уже процы и со строками
работают ...