| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		garik
 
 
  Joined: 25 Jul 2005 Posts: 40 Location: Ruslan Occupation: it Interests: moscow
  | 
		
			
				 Posted: 07 Nov 2005 17:04    Post subject: Округление после 16-той цифры... | 
				     | 
			 
			
				
  | 
			 
			
				| Проблема в следующем.По требованию системы Клиент-Банк в файле для экспорта платежей поле КБК должно иметь числовой формат.При эскпорте из Бэста 5 последних цифр 20-ти значного КБК округляется.Как этого можно избежать?Может кто сталкивался? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 07 Nov 2005 17:35    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| не понял можно чуть подробн | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		garik
 
 
  Joined: 25 Jul 2005 Posts: 40 Location: Ruslan Occupation: it Interests: moscow
  | 
		
			
				 Posted: 07 Nov 2005 17:57    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				поподробнее?....
 
В отладчике попробуйте набрать:
 
 ? 12345678901234567890
 
Получим:
 
    12345678901234570000
 
то есть с округлением до сотен тысяч.Есть ли надежда получить последние 5 цифр?   | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 07 Nov 2005 18:39    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Боюсь что быстро не получится.
 
Вы это в dbf кладете - может частями туда положить ? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		garik
 
 
  Joined: 25 Jul 2005 Posts: 40 Location: Ruslan Occupation: it Interests: moscow
  | 
		
			
				 Posted: 07 Nov 2005 19:02    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| Да в дбф...Штатными средставами экспорта в  Клиент-Банк.Как частями? Через ХФалЕвал ?Штатных способов не нашёл.....Видимо так и придётся сделать.... | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 07 Nov 2005 19:48    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				А если в поле сначало верхнюю часть положить типа
 
(alias)->field:=12345678900000000000
 
а потом 
 
(alias)->field+=1234567890
 
Попробуйте проскочим или нет плз | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Олег Смирнов
 
 
  Joined: 06 Sep 2004 Posts: 821 Location: Олег Смирнов Occupation: Раут (поганист-сисадмин) Interests: Новосибирск
  | 
		
			
				 Posted: 07 Nov 2005 20:32    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | nordk wrote: | 	 		  А если в поле сначало верхнюю часть положить типа
 
(alias)->field:=12345678900000000000
 
а потом 
 
(alias)->field+=1234567890
 
Попробуйте проскочим или нет плз | 	  
 
Тогда уж надо (alias)->field+=1234567890*10000000000, только вот сомневаюсь, что это что-то кому-то даст... _________________ С уважением, Олег Р. Смирн | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		garik
 
 
  Joined: 25 Jul 2005 Posts: 40 Location: Ruslan Occupation: it Interests: moscow
  | 
		
			
				 Posted: 08 Nov 2005 14:16    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | nordk wrote: | 	 		  А если в поле сначало верхнюю часть положить типа
 
(alias)->field:=12345678900000000000
 
а потом 
 
(alias)->field+=1234567890
 
Попробуйте проскочим или нет плз | 	  
 
Нет.Не проскочили...В поле та же 123...570000 .Вообще большие числа возможны?Есть ли какие-то set'ы по ограничению количество цифр в числе?Или это особенности среды Клиппера,дбф? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Tsarenko P
 
 
  Joined: 06 Oct 2005 Posts: 2 Location: Царенко П.Е. Occupation: программист Interests: Донецк
  | 
		
			
				 Posted: 08 Nov 2005 16:26    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Странное требование клиент-банка. Как они интересно собираются читать такое
 
поле ?
 
 
Вот максимальные значения для 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 | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 09 Nov 2005 12:48    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Спасибо за участие в теме.
 
Буду надеятся на дальнейшую помощь с харбором в случае подобных вопросов   | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		garik
 
 
  Joined: 25 Jul 2005 Posts: 40 Location: Ruslan Occupation: it Interests: moscow
  | 
		
			
				 Posted: 09 Nov 2005 14:50    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| Спасибо за содержательный ответ.Вообще беда с этими клиент-банками.То 20-ти значные числа они хотят, то название поля дбф-базы более 10-ти символов...Будем боротся со специалистами банка. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Олег Смирнов
 
 
  Joined: 06 Sep 2004 Posts: 821 Location: Олег Смирнов Occupation: Раут (поганист-сисадмин) Interests: Новосибирск
  | 
		
			
				 Posted: 09 Nov 2005 20:16    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | garik wrote: | 	 		  | Будем боротся со специалистами банка. | 	  
 
У меня вообще такое впечатление, что специалисты Вашего банка чего-то там недодумали... Ну нахрена им такое длинное цифровое поле?.. На C его можно создать и заполнить, а читать они его чем собираются?!. Если тоже с помощью C - так не проще ли сделать это поле уже тупо текстовым? _________________ С уважением, Олег Р. Смирн | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		 |