Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Какое максимально возможное число в 1с? (число прочтений - 8166 )
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Какое максимально возможное число в 1с?
25. Июля 2008 :: 07:39
Печать  
Для реквизита формы можно выставить максимум 19 знаков, но на самом деле 1с может оперировать и с более большими числами. Как узнать максимальное?
  
Наверх
ICQ  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #1 - 25. Июля 2008 :: 09:19
Печать  
Nick писал(а) 25. Июля 2008 :: 07:39:
Для реквизита формы можно выставить максимум 19 знаков, но на самом деле 1с может оперировать и с более большими числами. Как узнать максимальное?

9999999999999999999999999999999999999999999999999999999999999999
  
Наверх
 
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #2 - 25. Июля 2008 :: 09:20
Печать  
Код
Выбрать все
Процедура Сформировать()
	тест = "9";
	Пока 1=1 Цикл
		Сообщить(Число(тест));
		Сообщить(Число(тест) + 1);
		тест = тест + 9;
	КонецЦикла;
КонецПроцедуры 


  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #3 - 25. Июля 2008 :: 09:34
Печать  
Спасибо Улыбка
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Какое максимально возможное число в 1с?
Ответ #4 - 25. Июля 2008 :: 09:41
Печать  
Nick писал(а) 25. Июля 2008 :: 07:39:
Для реквизита формы можно выставить максимум 19 знаков, но на самом деле 1с может оперировать и с более большими числами. Как узнать максимальное?

Нет максимального числа.
Ограничения только по доступной памяти и быстродействию.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #5 - 25. Июля 2008 :: 10:02
Печать  
kms писал(а) 25. Июля 2008 :: 09:41:
Нет максимального числа.
Ограничения только по доступной памяти и быстродействию.


а как же тогда объяснить загадочное поведение обработки??
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Какое максимально возможное число в 1с?
Ответ #6 - 25. Июля 2008 :: 10:10
Печать  
Pelmen писал(а) 25. Июля 2008 :: 10:02:
а как же тогда объяснить загадочное поведение обработки??

Тем, что ты конвертацию тестишь, а не числа.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: Какое максимально возможное число в 1с?
Ответ #7 - 25. Июля 2008 :: 10:24
Печать  
kms писал(а) 25. Июля 2008 :: 10:10:
Pelmen писал(а) 25. Июля 2008 :: 10:02:
а как же тогда объяснить загадочное поведение обработки??

Тем, что ты конвертацию тестишь, а не числа.

X=9999999999999999999999999999999999999999999999999999999999999999;
Сообщить(X);
X=X*X;
Сообщить(X);
Первое сообщить выдает
9999999999999999999999999999999999999999999999999999999999999999
второе
9999999999999999999999999999999999999999999999999999999999999998

Как это понять?
Почему это так ?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Какое максимально возможное число в 1с?
Ответ #8 - 25. Июля 2008 :: 10:33
Печать  
Думай, Петька, Думай (с) Василь Иваныч

hint:
Код
Выбрать все
9999999999999999999999999999999999999999999999999999999999999999^2 ==
000000000000000000000000000000000000000000000001
 

  

De quelle planète es-tu?
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #9 - 25. Июля 2008 :: 10:44
Печать  
Код
Выбрать все
X1=9999999999999999999999999999999999999999999999999999999999999999;
Сообщить(X1);
X2=X1*X1*X1;
Сообщить(X2);
X2=X2/X1/X1;
Сообщить(X2);
 


Цитата:
9999999999999999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999999999999997
9999999999999999999999999999999999999999999999999999999999999999

имеет место ограничение при конвертации числа в строку, а не ограничение на разрядность чисел и операций над ними.
Подтверждаю что числа в 1С (CNumeric) имеют динамическую природу и аграничены только виртуальной памятью
  

1&&2&&3
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #10 - 25. Июля 2008 :: 10:58
Печать  
Обалдеть Улыбка
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #11 - 25. Июля 2008 :: 11:14
Печать  
Новый оклад себе расчитываешь?  Подмигивание
  
Наверх
 
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: Какое максимально возможное число в 1с?
Ответ #12 - 25. Июля 2008 :: 11:30
Печать  
trad писал(а) 25. Июля 2008 :: 10:44:
Код
Выбрать все
X1=9999999999999999999999999999999999999999999999999999999999999999;
Сообщить(X1);
X2=X1*X1*X1;
Сообщить(X2);
X2=X2/X1/X1;
Сообщить(X2);
 


Цитата:
9999999999999999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999999999999997
9999999999999999999999999999999999999999999999999999999999999999

имеет место ограничение при конвертации числа в строку, а не ограничение на разрядность чисел и операций над ними.
Подтверждаю что числа в 1С (CNumeric) имеют динамическую природу и аграничены только виртуальной памятью

Как храниться CNumeric
и как быстро вытащить все цифры из него?



  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #13 - 25. Июля 2008 :: 11:53
Печать  
nikolka писал(а) 25. Июля 2008 :: 11:30:
Как храниться CNumeric

     int m_0;
     int m_nBufferLen;
     int m_nUsedLen;
     int m_nScaleLen;
     short m_Sign;
     int m_ScaleFactor;
     UINT *m_pBuffer;
     UINT m_Buffer[4];
если число не "очень большое", то оно храниться в 16 байтах m_Buffer
если число "очень большое", то оно храниться в динамически выделенном буфере на который указывыает m_pBuffer
Только не спрашивай как происходят мат.операции и перевыделение буфера. Не изучал.
nikolka писал(а) 25. Июля 2008 :: 11:30:
и как быстро вытащить все цифры из него?

вытащить куда?
  

1&&2&&3
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Какое максимально возможное число в 1с?
Ответ #14 - 25. Июля 2008 :: 11:59
Печать  
nikolka писал(а) 25. Июля 2008 :: 11:30:
и как быстро вытащить все цифры из него?

Ну как... Отнимать и делить... (c) Пособие для молодых жен миллионеров. Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #15 - 25. Июля 2008 :: 12:05
Печать  
Причем в каждом 32х-разрядном слове буфера может храниться не максимальной двоичное число 2^32=4294967296, а число из девяти десятичных цифр (нонетов), т.е. 999999999 (т.е. используется только 30 разрядов)
Это я только про целые числа.
А про хранение дробных могут расказать например DmitrO или orefkov
  

1&&2&&3
Наверх
 
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #16 - 25. Июля 2008 :: 12:36
Печать  
а когда я вывожу чило, я получается тоже попадаю на ограничение связанное с конвертацией?
  
Наверх
 
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: Какое максимально возможное число в 1с?
Ответ #17 - 25. Июля 2008 :: 12:39
Печать  
kms писал(а) 25. Июля 2008 :: 11:59:
nikolka писал(а) 25. Июля 2008 :: 11:30:
и как быстро вытащить все цифры из него?

Ну как... Отнимать и делить... (c) Пособие для молодых жен миллионеров. Улыбка

Что то типа:
Функция ЧислоВСтроку(X)
     Z="";
     Пока X>9999999999 Цикл      
           Y=Цел(X/10000000000);      
           Z1=X-10000000000*Y;Z1=Строка(Z1);
           Z1=Лев("0000000000000",10-СтрДлина(Z1))+Z1;Z=Z1+Z;            
           X=Y;            
     КонецЦикла;
     Возврат Строка(X)+Z;      
КонецФункции
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #18 - 25. Июля 2008 :: 12:49
Печать  
Pelmen писал(а) 25. Июля 2008 :: 12:36:
а когда я вывожу чило, я получается тоже попадаю на ограничение связанное с конвертацией?

думаю что да
  

1&&2&&3
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Какое максимально возможное число в 1с?
Ответ #19 - 25. Июля 2008 :: 12:51
Печать  
nikolka писал(а) 25. Июля 2008 :: 12:39:
Что то типа:

Ну, типа того.
Здесь можно устроить конкурс, как это сделать быстрее.

Но в принципе, скорость не сильно важна, т.к. конвертация нужна только для представления результата.
А так - штатно любой объект 1С подходит для подсчета астрономических величин.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #20 - 25. Июля 2008 :: 13:02
Печать  
спасибо
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #21 - 25. Июля 2008 :: 13:10
Печать  
еще вариант
Код
Выбрать все
Функция ЧислоВСтроку2(Знач X)
	Z="";
	Пока X>999999999999999999999999999999999999 Цикл
		00000),36)+Z;
		X=Цел(X/1000000000000000000000000000000000000);
	КонецЦикла;
	Возврат Строка(X)+Z;
КонецФункции
 

  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #22 - 25. Июля 2008 :: 13:24
Печать  
Порядок
чисел
ЧислоВСтроку
(t, ms)
ЧислоВСтроку2
(t, ms)
820 004 003
1641 012 006
2462 024 012
3283 041 019
4104 062 029
4925 089 037
5746 120 050
6567 155 062
7388 196 078
8209 239 092

Процедура Сформировать()
     343146233356576856531134314623356735673565768565311343146233;
     X=1;
     Сообщить("[tr][td]Порядок чисел [/td][td]ЧислоВСтроку (t, ms) [/td][td]ЧислоВСтроку2 (t, ms) [/td][/tr]");
     Для Тек=1 По 10 Цикл
           X=X*X1*X1*X1*X1*X1*X1;
           
           Сч=_GetPerformanceCounter();
           Стр1=ЧислоВСтроку(X);
           Стр2=Строка(_GetPerformanceCounter()-Сч);

           Сч=_GetPerformanceCounter();
           Стр3=ЧислоВСтроку2(X);
           Стр4=Строка(_GetPerformanceCounter()-Сч);
           
           Сообщить("[tr][td]"+(СтрДлина(Стр1)-1)+" [/td][td]"+Прав(Стр2,3)+" [/td][td]"+Прав(Стр4,3)+" [/td][/tr]");
     КонецЦикла;
КонецПроцедуры
  

1&&2&&3
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Какое максимально возможное число в 1с?
Ответ #23 - 26. Июля 2008 :: 02:52
Печать  
Интересная ветка получилась Улыбка. Где бы это ещё применить...
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать