Re: Философский вопрос про 3й диалект
Андрей Иванов wrote: Делишь на целое получишь цело. Подели на 10.0 ...получишь NUMERIC(х,1) Дык, в том-то и дело, что в общем случае в результате деления получается бесконечная дробь.
Re: Философский вопрос про 3й диалект
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й диалект
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й диалект
Блин, ну нафига было к делению применять правило, определенное для умножения... :-(( Потому, что на уровне инструкций процессора ЭВМ умеет только прибавлять и умножать. Опреации деления и вычитания получаются путем математических преобразований над этими операциями (прибавление числа со знаком или умножение на число в минус первой степени).
Re: Философский вопрос про 3й диалект
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й диалект
Привет, PEAKTOP! Вы пишешь 24 декабря 2007: Блин, ну нафига было к делению применять правило, определенное для умножения... :-(( P Потому, что на уровне инструкций процессора ЭВМ умеет только P прибавлять и умножать. Опреации деления и вычитания получаются путем P математических преобразований над этими операциями (прибавление числа P со знаком или умножение на число в минус первой степени). Оно так было. Когда-то... Давно... Очень. -- With best regards, Alex Cherednichenko.
Re: Философский вопрос про 3й диалект
Kovalenko Dmitry wrote: Вообще, конечно, поздновато ты проснулся. Бугага. Просто момент подходящий подвернулся для перехода
Re: Философский вопрос про 3й диалект
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й диалект
Hello, Konstantin! Konstantin R. Beliaev wrote: Т.е. определяется _производителем_ , а отнюдь не стандартом SQL-92 ! да, и в 2002-ом стандарте то же самое. PS. Я понимаю, что выступать поздно, просто как-то коряво везде писать CAST() при делении и вычислении AVG(). Может, конечно, все уже привыкли? гм. я среднее значение от множества целых чисел представляю себе исключительно как ЦЕЛОЕ ЧИСЛО. Может, в консерватории что? -- Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34
Re: Философский вопрос про 3й диалект
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й диалект
Владимир Аксенов пишет: (1+2+3+4+5+6+7+8+9+10)/10=5,5 Что не так? Делишь на целое получишь цело. Подели на 10.0 -- Успехов, Андрей Иванов.
Re: Философский вопрос про 3й диалект
Карабас Барабас пишет: [2,3,5] (2+3+5)/3 = 3.333 или 3.333 ? равно просто 3 -- Успехов, Андрей Иванов.
Re: Философский вопрос про 3й диалект
Оно и сейчас так. Только из кода переместилось в микрокод процессора. И уже не на уровне инструкций процессора, а на уровне его же микроинструкций. Да оно много чего переместилось. Сейчас уже процы и со строками работают ...