Сравнивание больших чисел

Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string? 
14 ответов

Сначала нужно подсчитать кол-во символов в строчке с помощью ф-и Length(Str), тоесть 
S:=Length(str);
а потом уже сравнивать.


Не хочется изобретать велосипед.  Может есть готовая функция?


function Compare(const AS1, AS2: String): Integer;var  Len1, Len2: Integer;begin  Len1 := Length(AS1);  Len2 := Length(AS2);  if Len1 <> Len2 then    if Len1 > Len2 then      Result := 1    else      Result := -1  else    Result := CompareStr(AS1, AS2);end;
Что нибудь типа этого думаю.Положительное значение результата - 1 число больше, отрицательное - меньше. Если равны то 0.


Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string?  
Что имеется ввиду?


THandle, Спасибо, выручил.


Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string? 
THandle, Спасибо, выручил. 
А заодно и "кинул подлянку". 


Цитата(valerchi @  21.11.2010,  16:43 )
Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string? 
Цитата(valerchi @  22.11.2010,  00:42 )
THandle, Спасибо, выручил. 
А заодно и "кинул подлянку". 
Какую подлянку?


Keeper89
Цитата(valerchi @  21.11.2010,  16:43 Найти цитируемый пост)Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string?  
Что имеется ввиду?Имеется ввиду, что числа в длинной арифметике записываются как строка (тип string)? и я спросил, есть ли такая функция, которая может сравнить и определить, какое из двух сравниваемых чисел, записанных в строку, больше, а какое меньше, или может они равны...


Какую подлянку?
Ну подлянку - не подлянку, для тривиальных случаев проканает, просто внимательно надо пользоваться, к примеру, избавляться от ведущих и хвостовых нулей:
Compare('0123456789','123456789');Compare('0.1','0.10');
Но не от всяких:
Compare('0.12345678','.123456789')
Да и не только от нулей:
Compare('123456789.0','123456789');
Но самая главная - проблема со знаками, их тоже надо учитывать:
Compare('-123','123');
И вообще, THandle указал направление, просто его развить надо, дополнить разными граничными условиями. Люди ведь не зря пишут целые библиотеки, посвященные работе с большими числами. Кстати, если погуглить - можно найти какие-нибудь исходники, посвященные этой теме.


THandle, Первое число может быть "001", а второе "99" и ваша функция даст не верный результат


Лучше переводить в число и сравнивать.


Лучше переводить в число и сравнивать.
Всмысле, переводить в тип integer или вещественный? Но дело в том, что перевести не получается, - сильно числа большие (70 - 100 значные)


XperT, как сказал ama_kid это просто самый элементарный пример сравнения. Все конечно зависит от того что за числа, какая запись и тд.


valerchi, создай отдельный класс, и предусмотри проверки, так будет получше.