Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как в firebird округлить double до большего целого? / 13 сообщений из 13, страница 1 из 1
02.12.2007, 13:37
    #34980318
siriusP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
Добрый день!
Как в firebird округлить double до большего целого?
Спасибо.
...
Рейтинг: 0 / 0
02.12.2007, 20:43
    #34980729
ku3ia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
юзай UDF
...
Рейтинг: 0 / 0
03.12.2007, 11:05
    #34981450
siriusP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
ku3iaюзай UDF

в каком смысле?
...
Рейтинг: 0 / 0
03.12.2007, 11:11
    #34981472
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
siriusP ku3iaюзай UDF

в каком смысле?В прямом.
Чтишь на ibase.ru как написать УДФ, собстно пишешь и пользуешь. :)
Можно вестимо и чистым sql-ем обойтись, но нужно ли?
...
Рейтинг: 0 / 0
03.12.2007, 11:35
    #34981570
Vladimir Kozlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
Ivan_PisarevskyМожно вестимо и чистым sql-ем обойтись, но нужно ли?

CAST(MyDouble + 0.5 AS INT)
...
Рейтинг: 0 / 0
03.12.2007, 11:57
    #34981653
siriusP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
Vladimir Kozlov Ivan_PisarevskyМожно вестимо и чистым sql-ем обойтись, но нужно ли?

CAST(MyDouble + 0.5 AS INT)

если MyDouble = 1.00 то некорректно округляет
...
Рейтинг: 0 / 0
03.12.2007, 12:08
    #34981700
Kull Damned
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
siriusP Vladimir Kozlov Ivan_PisarevskyМожно вестимо и чистым sql-ем обойтись, но нужно ли?

CAST(MyDouble + 0.5 AS INT)

если MyDouble = 1.00 то некорректно округляетПонаплодят программеров...
Код: plaintext
case when MyDouble-cast(MyDouble as int)> 0  then cast(MyDouble as int)+ 1  else cast(MyDouble as int) end
...
Рейтинг: 0 / 0
03.12.2007, 12:11
    #34981716
Пьяный Винни-Пух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
Kull DamnedПонаплодят программеров...


Точна-точна. Лучше бы азбуке учили. Глядишь, и прочитали бы список стандартных УДФ.
...
Рейтинг: 0 / 0
03.12.2007, 12:15
    #34981730
TPAKTOPA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
siriusP Vladimir KozlovCAST(MyDouble + 0.5 AS INT)если MyDouble = 1.00 то некорректно округляетА версия сервер-а какая ? И раз сервер округляет с X.5 вверх, а с Х.499(9) вниз, трудно просто написать ?
Код: plaintext
CAST(MyDouble AS INT) 
...
Рейтинг: 0 / 0
03.12.2007, 12:36
    #34981810
Vladimir Kozlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
Пьяный Винни-ПухТочна-точна. Лучше бы азбуке учили. Глядишь, и прочитали бы список стандартных УДФ.

CEILING вроде как в 2.1 встроили... а версию сервера автор не озвучил.

siriusP
если MyDouble = 1.00 то некорректно округляет


Округляет до _большего_ целого, как ты и просил.
В определении CEIL написано "Returns a value representing the smallest integer that is greater than or equal to the input argument", ты ж не попросил "до большего или равного целого" :-P
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
17.08.2016, 16:39
    #39293418
DSKalugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
Для тех, кто гуглом ищет ответ на этот вопрос и попадает сюда
встроенные (не UDF-ные) в Firebird 2.5 SQL-функции ROUND, CEIL, CEILING, FLOOR, TRUNC для округления чисел
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
-- тест
select

round(1.48, 0) as "round_1_48",
round(-1.48, 0) as "-round_1_48",
round(1.5, 0)  as "round_1_5",
round(-1.5, 0) as "-round_1_5",
round(1.51, 0) as "round_1_51",
round(-1.51, 0)  as "-round_1_51",

TRUNC(1.48, 0) as "TRUNC_1_48",
TRUNC(-1.48, 0) as "-TRUNC_1_48",
TRUNC(1.5, 0)  as "TRUNC_1_5",
TRUNC(-1.5, 0) as "-TRUNC_1_5",
TRUNC(1.51, 0) as "TRUNC_1_51",
TRUNC(-1.51, 0)  as "-TRUNC_1_51",

CEIL(1.48) as "CEIL_1_48",
CEIL(-1.48) as "-CEIL_1_48",
CEIL(1.5)  as "CEIL_1_5",
CEIL(-1.5) as "-CEIL_1_5",
CEIL(1.51) as "CEIL_1_51",
CEIL(-1.51)  as "-CEIL_1_51",

CEILING(1.48) as "CEILING_1_48",
CEILING(-1.48) as "-CEILING_1_48",
CEILING(1.5)  as "CEILING_1_5",
CEILING(-1.5) as "-CEILING_1_5",
CEILING(1.51) as "CEILING_1_51",
CEILING(-1.51)  as "-CEILING_1_51",

FLOOR(1.48) as "FLOOR_1_48",
FLOOR(-1.48) as "-FLOOR_1_48",
FLOOR(1.5)  as "FLOOR_1_5",
FLOOR(-1.5) as "-FLOOR_1_5",
FLOOR(1.51) as "FLOOR_1_51",
FLOOR(-1.51)  as "-FLOOR_1_51"

from rdb$database
...
Рейтинг: 0 / 0
17.08.2016, 17:39
    #39293474
fb user
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
Такие алиасы тоже можно.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
SELECT

ROUND(1.48, 0) AS "ROUND(1.48, 0)",
ROUND(-1.48, 0) AS "ROUND(-1.48, 0)",
ROUND(1.5, 0) AS "ROUND(1.5, 0)",
ROUND(-1.5, 0) AS "ROUND(-1.5, 0)",
ROUND(1.51, 0) AS "ROUND(1.51, 0)",
ROUND(-1.51, 0) AS "ROUND(-1.51, 0)",

TRUNC(1.48, 0) as "TRUNC(1.48, 0)",
TRUNC(-1.48, 0) as "TRUNC(-1.48, 0)",
TRUNC(1.5, 0)  as "TRUNC(1.5, 0)",
TRUNC(-1.5, 0) as "TRUNC(-1.5, 0)",
TRUNC(1.51, 0) as "TRUNC(1.51, 0)",
TRUNC(-1.51, 0)  as "TRUNC(-1.51, 0)",

CEIL(1.48) as "CEIL(1.48)",
CEIL(-1.48) as "CEIL(-1.48)",
CEIL(1.5) as "CEIL(1.5)",
CEIL(-1.5) as "CEIL(-1.5)",
CEIL(1.51) as "CEIL(1.51)",
CEIL(-1.51)  as "CEIL(-1.51)",

CEILING(1.48) as "CEILING(1.48)",
CEILING(-1.48) as "CEILING(-1.48)",
CEILING(1.5) as "CEILING(1.5)",
CEILING(-1.5) as "CEILING(-1.5)",
CEILING(1.51) as "CEILING(1.51)",
CEILING(-1.51) as "CEILING(-1.51)",

FLOOR(1.48) as "FLOOR(1.48)",
FLOOR(-1.48) as "FLOOR(-1.48)",
FLOOR(1.5)  as "FLOOR(1.5)",
FLOOR(-1.5) as "FLOOR(-1.5)",
FLOOR(1.51) as "FLOOR(1.51)",
FLOOR(-1.51)  as "FLOOR(-1.51)",

FROM RDB$DATABASE
...
Рейтинг: 0 / 0
17.08.2016, 17:54
    #39293483
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в firebird округлить double до большего целого?
fb user,

Запихни это в execute block. И смотреть будет легче на результаты и такой простыни кода не нужно.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как в firebird округлить double до большего целого? / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]