![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ув. мастера, как в IB создать кальк. поле с отсечением дроб. част [D6, IB7.0]
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)
Но думаю, что проблема надуманна...