powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / interbase целые и дробные части числа
21 сообщений из 21, страница 1 из 1
interbase целые и дробные части числа
    #38852694
Grigory1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу никак въехать...
спрошу на примере...
есть x1=6,144 и x2=1.2;
нужно получить целую и дробную часть деления этих чисел в виде integer;
т.е 6,144/1,2=5,12

результат 5 -целое, 12-дробное

Уже 3 часа сижу мучаю udf
с целой придумал cast(5,12 as integer)===5
а вот как 12 вытащить???

Заранее спасибо.
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38852695
Grigory1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я про хранимые процедуры)
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38852729
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grigory1111я про хранимые процедуры)floor()
зы. я про доку :)
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38852732
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grigory1111а вот как 12 вытащить???я извращенец, поэтому предложу зафигачить в стринг, а там уже разобрать этот стринг
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38852743
Фотография Exteris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roadster я извращенец
Видимо я тоже.)
Код: sql
1.
2.
select substr('6.12',1,position('.' in '6.12')-1),substr('6.12',position('.' in '6.12')+1,20)
from rdb$database
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38852744
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grigory1111,

Умножь на 100 ;)
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38852771
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если из самого числа отнять его целую часть, то (внезапно!) в результете останется дробная. ;)
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38852808
Фотография MNF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть у меня тут ХП древняя для таких дел, живет еще с 5.6 кажется :-o

Код: plsql
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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
CREATE OR ALTER PROCEDURE F_MODF (
    ANUMERIC TYPE OF TY$NUMBER)
RETURNS (
    AINTEGER TYPE OF TY$NUMBER,
    AFRACTION TYPE OF TY$NUMBER)
AS
/*******************************************************************************
* $Workfile: F_MODF.sp $
* $Revision: 4 $
* $Date: 15.07.13 14:58 $
*
* DBVERSION:
*   DB6.000.041
*
* DESCRIPTION: 
*    Разбиение числа на целую и дробную части.
*    Пример: 'SELECT * FROM f_modf(2.5)' вернет 2.0, 0.5.
*
* INPUT PARAMS:
*    ANUMERIC       Преобразуемое число
*
* OUTPUT PARAMS:
*    AINTEGER       Целая часть
*    AFRACTION      Дробная часть
*******************************************************************************/
  DECLARE IsNegative TYPE OF TY$SMALLINT;
BEGIN
  IF (ANumeric IS NOT NULL) THEN
  BEGIN
    IF (ANumeric < 0) THEN
    BEGIN
      IsNegative = 1;
      ANumeric = - ANumeric;
    END
    ELSE
      IsNegative = 0;

    BEGIN

    AInteger = CAST(ANumeric AS TYPE OF TY$INTEGER);

    WHEN ANY DO AInteger = ANumeric;

    END

    AFraction = ANumeric - AInteger;

    IF (AFraction < 0) THEN
    BEGIN
      AInteger = AInteger - 1;
      AFraction = ANumeric - AInteger;
    END

    IF (IsNegative = 1) THEN
    BEGIN
      AInteger = - AInteger;
      AFraction = - AFraction;
    END
  END
  ELSE
  BEGIN
    AInteger = 0;
    AFraction = 0;
  END

  SUSPEND;
END


...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38852973
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все проще же (для неотрицательных чисел, для отрицательных немного подправить)
целая часть:
Код: sql
1.
cast(X-0.5 as integer)


дробная часть (как правильно тут заметили):
Код: sql
1.
X-cast(X-0.5 as integer)
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853003
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exterisroadsterя извращенец
Видимо я тоже.)
Код: sql
1.
2.
select substr('6.12',1,position('.' in '6.12')-1),substr('6.12',position('.' in '6.12')+1,20)
from rdb$database

я бы ещё предусмотрел вариант с запятой, как разделитель
pastorGrigory1111,

Умножь на 100 ;)а если тысячные доли?
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853010
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853011
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf
Код: sql
1.
cast(X-0.5 as integer)

ужас.
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853013
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyNaf
Код: sql
1.
cast(X-0.5 as integer)


ужас.
На что народ не пойдет, только бы стандартные функции не использовать :)
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853022
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineНа что народ не пойдет, только бы стандартные функции доку не использовать читать :)поправил. :)
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853185
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Exterisroadster я извращенец
Видимо я тоже.)
Код: sql
1.
2.
select substr('6.12',1,position('.' in '6.12')-1),substr('6.12',position('.' in '6.12')+1,20)
from rdb$database


И на машине, где decimal separator выставлен в ",", получим что? Правильно, по лбу.
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853192
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Fr0st-brutal!
You wrote on 13 января 2015 г. 14:31:29:

Fr0st-brutal> И на машине, где decimal separator выставлен в ",", получим что?
> Правильно, по лбу.не по лбу, а в ухо!
NLS клиента серверу пох.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853206
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийне по лбу, а в ухо!
И это правильно, поскольку отсылать число на сервер только чтобы поделить его на целую и
дробную части это маразм.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853225
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskymiwaonlineНа что народ не пойдет, только бы стандартные функции доку не использовать читать :)поправил. :)
зато работает на разных СУБД, даже в запросах 1С 8.х
а про документацию - согласен
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853441
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийNLS клиента серверу пох.

Так я про сервер
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853530
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nafзато работает на разных СУБД, даже в запросах 1С 8.хТам нет своих каких-то запросов.
А вот с поддержкой встроенных функций - да, беда.
...
Рейтинг: 0 / 0
interbase целые и дробные части числа
    #38853753
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovотсылать число на сервер только чтобы поделить его на целую и
дробную части это маразмвариант обработки в ХП не приходит в голову?
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / interbase целые и дробные части числа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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