powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как в firebird округлить double до большего целого?
13 сообщений из 13, страница 1 из 1
Как в firebird округлить double до большего целого?
    #34980318
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Как в firebird округлить double до большего целого?
Спасибо.
...
Рейтинг: 0 / 0
Как в firebird округлить double до большего целого?
    #34980729
ku3ia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
юзай UDF
...
Рейтинг: 0 / 0
Как в firebird округлить double до большего целого?
    #34981450
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ku3iaюзай UDF

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

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

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

CAST(MyDouble + 0.5 AS INT)

если MyDouble = 1.00 то некорректно округляет
...
Рейтинг: 0 / 0
Как в firebird округлить double до большего целого?
    #34981700
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как в firebird округлить double до большего целого?
    #34981716
Фотография Пьяный Винни-Пух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kull DamnedПонаплодят программеров...


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

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
Период между сообщениями больше года.
Как в firebird округлить double до большего целого?
    #39293418
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для тех, кто гуглом ищет ответ на этот вопрос и попадает сюда
встроенные (не 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
Как в firebird округлить double до большего целого?
    #39293474
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такие алиасы тоже можно.
Код: 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
Как в firebird округлить double до большего целого?
    #39293483
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb user,

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


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