Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Абсолютное значение (модуль) поля


Страницы:   1 2

Juice ©   (2006-03-14 19:40:00) 

Какая функция используется в Interbase/Firebird чтобы получить абсолютное значение (модуль) поля ?


Johnmen   (2006-03-16 09:43:00) [1]

Вот мне и было интересно, зачем ты пустые сообщения постишь...


Виталий Панасенко   (2006-03-16 09:24:00) [2]

Уже не интересно.Спор пустой.Да и спать охота.


Johnmen   (2006-03-16 09:01:00) [3]

А есть сомневающиеся?


Виталий Панасенко   (2006-03-16 08:59:00) [4]

Что 0*Число все равно 0. Больше ничего.


Johnmen   (2006-03-15 18:33:00) [5]

>Виталий Панасенко   (15.03.06 17:50) [22]

Что ты хотел сказать постом [22] ?


Johnmen   (2006-03-15 18:14:00) [6]

>sniknik ©   (15.03.06 18:01) [24]

Да, это для IB/FB с его особенностями округления при CAST'е.


Виталий Панасенко   (2006-03-15 18:08:00) [7]


> Виталий Панасенко   (15.03.06 17:50) [22]


(или F*0, если F=0. хотя это уже не важно, т.к. F=0)


sniknik   (2006-03-15 18:01:00) [8]

> Можешь же сам тестануть...
в mssql не получится (округление при cast "неправильное") надо заменить на
SELECT
F * ROUND(ROUND(ROUND(F + 0.5, 0) - 0.5, 0) - (ROUND(F - 0.5, 0)) - 0.5, 0)


Johnmen   (2006-03-15 17:59:00) [9]

Ну если тебе проще на пальцах просчитать, то ты заметишь, что получаются варианты
-F*-1
F*1
0*2

:)


Виталий Панасенко   (2006-03-15 17:50:00) [10]

Зачем тестить ? Математику на отменяли еще: чтобы ты там не навоял, в результате упрощения ДОЛЖНО получиться выражение вида:
-F*-1 или F*1 (или F*0, если F=0. хотя это уже не важно, т.к. F=0) И НИЧЕГО ДРУГОГО..:-))


Johnmen   (2006-03-15 17:46:00) [11]

Да, в примере [15] F умножается не на sign, но в результате умножения получается abs.
Там же всё элементарно :) Можешь же сам тестануть...


Виталий Панасенко   (2006-03-15 17:39:00) [12]


> Johnmen ©   (15.03.06 17:01) [19]
> Нет.
> К сожалению, sign таким приёмом можно получить только для
> целочисленных типов.

Но если ты таким образом получашь что-то отличное от модуля 1, то F*на это что-то уже далеко не модуль F ...


Johnmen   (2006-03-15 17:01:00) [13]

Нет.
К сожалению, sign таким приёмом можно получить только для целочисленных типов.


Виталий Панасенко   (2006-03-15 16:27:00) [14]

Красиво. Это ты так -1 или 1 получаешь ? т.е. функция Sign ?


Johnmen   (2006-03-15 15:20:00) [15]

Сам...


atruhin   (2006-03-15 15:15:00) [16]

Нда. Работает. Ни за что бы не додумался. Сам изобрел?


Johnmen   (2006-03-15 15:02:00) [17]

>atruhin ©   (15.03.06 14:35) [14]

Сдаюсь :)

SELECT
F *  CAST(CAST(CAST(F + 0.5 AS INTEGER) - 0.5 AS INTEGER) - (CAST(F - 0.5 AS INTEGER)) - 0.5 AS INTEGER)


atruhin   (2006-03-15 14:35:00) [18]

>>[12] Johnmen ©   (15.03.06 10:54)
Ну уж сдавайтесь :). Ни чего не получается, а очень интересно!


Виталий Панасенко   (2006-03-15 12:51:00) [19]


> Johnmen ©   (15.03.06 10:54) [12]
> Одним "простым" запросом. Используется CAST. Это подсказка.
>  Предлагаю подумать, ведь это интересно...:)

Интересно, зачем тогда UDF поставляют ?.:-))


Johnmen   (2006-03-15 10:54:00) [20]

Одним "простым" запросом. Используется CAST. Это подсказка. Предлагаю подумать, ведь это интересно...:)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо