Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Округление после 16-той цифры...

 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
garik



Joined: 25 Jul 2005
Posts: 40
Location: Ruslan
Occupation: it
Interests: moscow

PostPosted: 07 Nov 2005 17:04    Post subject: Округление после 16-той цифры... Reply with quote

Проблема в следующем.По требованию системы Клиент-Банк в файле для экспорта платежей поле КБК должно иметь числовой формат.При эскпорте из Бэста 5 последних цифр 20-ти значного КБК округляется.Как этого можно избежать?Может кто сталкивался?
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 07 Nov 2005 17:35    Post subject: Reply with quote

не понял можно чуть подробн
Back to top
View user's profile Send private message Send e-mail
garik



Joined: 25 Jul 2005
Posts: 40
Location: Ruslan
Occupation: it
Interests: moscow

PostPosted: 07 Nov 2005 17:57    Post subject: Reply with quote

поподробнее?....
В отладчике попробуйте набрать:
? 12345678901234567890
Получим:
12345678901234570000
то есть с округлением до сотен тысяч.Есть ли надежда получить последние 5 цифр?
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 07 Nov 2005 18:39    Post subject: Reply with quote

Боюсь что быстро не получится.
Вы это в dbf кладете - может частями туда положить ?
Back to top
View user's profile Send private message Send e-mail
garik



Joined: 25 Jul 2005
Posts: 40
Location: Ruslan
Occupation: it
Interests: moscow

PostPosted: 07 Nov 2005 19:02    Post subject: Reply with quote

Да в дбф...Штатными средставами экспорта в Клиент-Банк.Как частями? Через ХФалЕвал ?Штатных способов не нашёл.....Видимо так и придётся сделать....
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 07 Nov 2005 19:48    Post subject: Reply with quote

А если в поле сначало верхнюю часть положить типа
(alias)->field:=12345678900000000000
а потом
(alias)->field+=1234567890
Попробуйте проскочим или нет плз
Back to top
View user's profile Send private message Send e-mail
Олег Смирнов



Joined: 06 Sep 2004
Posts: 821
Location: Олег Смирнов
Occupation: Раут (поганист-сисадмин)
Interests: Новосибирск

PostPosted: 07 Nov 2005 20:32    Post subject: Reply with quote

nordk wrote:
А если в поле сначало верхнюю часть положить типа
(alias)->field:=12345678900000000000
а потом
(alias)->field+=1234567890
Попробуйте проскочим или нет плз

Тогда уж надо (alias)->field+=1234567890*10000000000, только вот сомневаюсь, что это что-то кому-то даст...
_________________
С уважением, Олег Р. Смирн
Back to top
View user's profile Send private message
garik



Joined: 25 Jul 2005
Posts: 40
Location: Ruslan
Occupation: it
Interests: moscow

PostPosted: 08 Nov 2005 14:16    Post subject: Reply with quote

nordk wrote:
А если в поле сначало верхнюю часть положить типа
(alias)->field:=12345678900000000000
а потом
(alias)->field+=1234567890
Попробуйте проскочим или нет плз

Нет.Не проскочили...В поле та же 123...570000 .Вообще большие числа возможны?Есть ли какие-то set'ы по ограничению количество цифр в числе?Или это особенности среды Клиппера,дбф?
Back to top
View user's profile Send private message
Tsarenko P



Joined: 06 Oct 2005
Posts: 2
Location: Царенко П.Е.
Occupation: программист
Interests: Донецк

PostPosted: 08 Nov 2005 16:26    Post subject: Reply with quote

Странное требование клиент-банка. Как они интересно собираются читать такое
поле ?

Вот максимальные значения для 8-ми байтого целого (longlong, int64)

#define _I64_MIN (-9223372036854775807i64-1) /* minimum signed __int64 value */
#define _I64_MAX 9223372036854775807i64 /* maximum signed __int64 value */
#define _UI64_MAX 18446744073709551615ui64 /* maximum unsigned __int64 value */

Эти ограничения работают и для харбора, если значение числа больше,
число преобразуется в 8-ми байтовый double с потерей последних значащих
цифр. 128-битные целые по-моему в моду еще не вошли

Есть ли выход ? Он есть всегда
Можно например написать процедуру на C и непосредственно копировать
20-ти байтовую строку в буфер текущей записи
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 09 Nov 2005 12:48    Post subject: Reply with quote

Спасибо за участие в теме.
Буду надеятся на дальнейшую помощь с харбором в случае подобных вопросов
Back to top
View user's profile Send private message Send e-mail
garik



Joined: 25 Jul 2005
Posts: 40
Location: Ruslan
Occupation: it
Interests: moscow

PostPosted: 09 Nov 2005 14:50    Post subject: Reply with quote

Спасибо за содержательный ответ.Вообще беда с этими клиент-банками.То 20-ти значные числа они хотят, то название поля дбф-базы более 10-ти символов...Будем боротся со специалистами банка.
Back to top
View user's profile Send private message
Олег Смирнов



Joined: 06 Sep 2004
Posts: 821
Location: Олег Смирнов
Occupation: Раут (поганист-сисадмин)
Interests: Новосибирск

PostPosted: 09 Nov 2005 20:16    Post subject: Reply with quote

garik wrote:
Будем боротся со специалистами банка.

У меня вообще такое впечатление, что специалисты Вашего банка чего-то там недодумали... Ну нахрена им такое длинное цифровое поле?.. На C его можно создать и заполнить, а читать они его чем собираются?!. Если тоже с помощью C - так не проще ли сделать это поле уже тупо текстовым?
_________________
С уважением, Олег Р. Смирн
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group

Rambler
Rambler's Top100 Рейтинг@Mail.ru