powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / забавное округление
6 сообщений из 6, страница 1 из 1
забавное округление
    #32273258
Натик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня возникла такая проблемка :
в таблице столбец типа NUMERIC(15,2). Туда записываю например 3945.2047, получается в базе 3945.2055, при отображении в программе в формате с двумя знаками после запятой это конечно дает 3945.21
и когда читаю эти данные процедурой (вывожу в тип NUMERIC(15,2) )
к числу 3945.2055 прибавляется чистый 0(значение другого столбца, может быть другим это частный случай) и получаю 3945.2040000000015.
ПОжалуйста посоветуйте как обойти эту проблему.
...
Рейтинг: 0 / 0
забавное округление
    #32273309
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ану-ка наваяй нам маленькую демонстрационную процедурку, чтоб мы посмотрели, а то не очень-то понятно, что и как прибавляется...
...
Рейтинг: 0 / 0
забавное округление
    #32273342
Натик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Основнй код такой

CREATE PROCEDURE GET_OP1
RETURNS (
IDDOG INTEGER,
PRC NUMERIC(15,2),
R_PRC NUMERIC(15,2),
DUTY_PRC NUMERIC(15,2) )
AS
BEGIN
DUTY_PRC=0;
FOR SELECT IDDOG, perc, r_perc FROM crdop WHERE IDDOG=798
INTO :IDDOG,:PRC, :R_PRC
DO begin
/*......*/
DUTY_PRC = DUTY_PRC + PRC - R_PRC;
SUSPEND;
END
END
в таблице столбцы perc, r_perc тоже типа NUMERIC(15,2)
пояснения :
так вот в столбце perc=3945.2055, а в r_perc=0
в итоге в DUTY_PRC= 3945.2040000000015
...
Рейтинг: 0 / 0
забавное округление
    #32273404
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, не знаю... у меня такое вот на FB1.5 правильно работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE PROCEDURE GET_OP1 
RETURNS ( 
  PRC NUMERIC( 15 , 2 ),
  R_PRC NUMERIC( 15 , 2 ),
  DUTY_PRC NUMERIC( 15 , 2 ) )
AS BEGIN
  DUTY_PRC= 0 ;
  PRC= 3945 . 2055 ;
  R_PRC= 0 ;
  DUTY_PRC = DUTY_PRC + PRC - R_PRC;
  SUSPEND;
END

Странно всё это. А какой сервер?
...
Рейтинг: 0 / 0
забавное округление
    #32273435
Фотография KiLLun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я проверил на FB 1.0.2.908 - Все работает. Все OK.
Попробуй использовать лругие типы...
...
Рейтинг: 0 / 0
забавное округление
    #32273671
1man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй DUTY_PRC=0.0;
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / забавное округление
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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