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

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

Ув. мастера, как в IB создать кальк. поле с отсечением дроб. част [D6, IB7.0]


Страницы:   1 2

SM ©   (2004-02-24 16:43:00) 

Ув. мастера, как в InterBase создать калькуляционное поле с отсечением дробной части или с округлением. То есть что-то вроде:

Field1:=Trunc(Field2/100);
или
Field1:=Round(Field2/100);


Johnmen   (2004-02-26 16:46:00) [1]

А так нет ?
COMPUTED BY (CAST(Field1*100 AS INTEGER)/100.0))
или так
COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE PRECISION)/100)


SM   (2004-02-26 16:41:00) [2]

COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100.000000001 AS DOUBLE PRECISION))

Вот так у меня все вышло


Johnmen   (2004-02-25 14:42:00) [3]

>SM   (25.02.04 14:34) [19]
> COMPUTED BY (CAST(CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE
> PRECISION)/100) AS DOUBLE PRECISION))
>Ругается на деление

Повнимательней со скобками...


stud   (2004-02-25 14:41:00) [4]

а что в результате-то должно получиться????


Johnmen   (2004-02-25 14:36:00) [5]

>SM   (25.02.04 14:34) [19]

Самообман...


Johnmen   (2004-02-25 14:36:00) [6]

>Zacho ©   (25.02.04 14:27) [18]
>COMPUTED BY (CAST(Field1 AS NUMERIC (15,2)))

Всё равно в выч.поле будет Field1
:)


SM   (2004-02-25 14:34:00) [7]


> COMPUTED BY (CAST(CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE
> PRECISION)/100) AS DOUBLE PRECISION))

Ругается на деление


> COMPUTED BY (CAST(Field1 AS NUMERIC (15,2)))

А вот это заработало! Спасибо большое.


Zacho   (2004-02-25 14:27:00) [8]

Тогда так:
COMPUTED BY (CAST(CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE PRECISION)/100) AS DOUBLE PRECISION))
Или так:
COMPUTED BY (CAST(Field1 AS NUMERIC (15,2)))


SM   (2004-02-25 14:26:00) [9]


> COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE
> PRECISION))


Тоже самое 5.000


SM   (2004-02-25 14:24:00) [10]


> COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE
> PRECISION))


Тоже самое 5.000


SM   (2004-02-25 14:23:00) [11]


> COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE
> PRECISION))


Тоже самое 5.000


Johnmen   (2004-02-25 14:22:00) [12]

COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE PRECISION)/100))


SM   (2004-02-25 14:19:00) [13]


> COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE
> PRECISION))


Тоже самое 5.000


Johnmen   (2004-02-25 14:13:00) [14]

1. Zacho ©   (25.02.04 13:54) [9]
2. Может быть подойти к этому по-другому ? Напр., не писать в поле неокругленные данные.


SM   (2004-02-25 14:08:00) [15]


> DOUBLE PRECISION
> COMPUTED BY (CAST(Field1*100 AS INTEGER)/100)


Проблемка возникла. Например, если Field1=5.5747, то результат поля равен 5, а не 5.57, как ожидалось.
Пробовал явно указать тип поля:

ALTER TABLE SCH_ITEMS
   ADD "Res" DOUBLE PRECISION COMPUTED BY ((CAST(Field1*100 AS INTEGER)/100))


Тогда все равно результат равен 5.000

Что не так?


Anatoly Podgoretsky   (2004-02-25 13:58:00) [16]

А в вопросе "поле с отсечением дробной части", но с учетом коррекции ответ выше. Ты поосторожнее с заданием вопросов, ставь их точно.


Zacho   (2004-02-25 13:54:00) [17]

Ну сделай так:
COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE PRECISION))


SM   (2004-02-25 13:48:00) [18]


> DOUBLE PRECISION
> COMPUTED BY (CAST(Field1*100 AS INTEGER)/100)


Проблемка возникла. Результат получается только целый.
Если Field1 = 5.268, то результат получается 5.000 вместо 5.260


SM   (2004-02-24 17:16:00) [19]

Большое спасибо.


> Но думаю, что проблема надуманна...


Для кого как ... :)


Johnmen   (2004-02-24 17:08:00) [20]

DOUBLE PRECISION
COMPUTED BY (CAST(Field1*100 AS INTEGER)/100)
Но думаю, что проблема надуманна...


Страницы:   1 2

Наверх

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