Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.16;
Скачать: CL | DM;

Вниз

20-значная цифра   Найти похожие ветки 

 
aidyn   (2008-05-26 13:10) [0]

у меня есть строковая переменная, состоящая из 20 цифр... с этим значением мне надо провести арифметические операции, но вот столкнулся с проблемой конвертации... Integer такое огромное значение не принимает, пробовал ставить Extended, но тогда при конвертации StrToFloat почему-то получается 0...
Подскажите что делать?


 
Stas ©   (2008-05-26 13:28) [1]

Нужна спец. библиотека, типа как эта http://gmplib.org/
незнаю к Delphi можно подключить или нет


 
Anatoly Podgoretsky ©   (2008-05-26 13:34) [2]

Если аппетиты снизишь до 19 знаков, то Int64 дает 9 223 372 036 854 775 807


 
aidyn   (2008-05-26 15:50) [3]

Вот именно, что аппетиты снизить не могу :), наоборот после некоторых операций цифра должна увеличиться до 22 знаков.


 
Dimka Maslov ©   (2008-05-26 15:59) [4]

Школа. 2 класс. Сложение, вычитание, умножение и деление в столбик. При желании можно выполнять арифметические операции над строковыми представлениями чисел любой длины.


 
Denis__ ©   (2008-05-26 19:37) [5]


> Dimka Maslov ©   (26.05.08 15:59) [4]

Полностью согласен. И делается не так уж и сложно!


 
tesseract ©   (2008-05-26 21:46) [6]


>  арифметические операции над строковыми представлениями
> чисел любой длины.


Numeric, таки работает, имееться в виду ?


 
aidyn   (2008-05-27 07:42) [7]


> При желании можно выполнять арифметические операции над
> строковыми представлениями чисел любой длины.

А как прводить арифметические операции над строков. переменными? подскажите плиз


 
Gadenysh   (2008-05-27 08:16) [8]

приводить посимвольно к integer (5 пишем один в уме)
как сказали, второй класс


 
Рамиль ©   (2008-05-27 10:04) [9]

Может лучше массивом из байт, а не строками. Зачем тратить время на конвертацию?


 
Style ©   (2008-05-27 11:31) [10]

а че там конвертировать то
ord(data[pos])-$30


 
DiamondShark ©   (2008-05-27 11:32) [11]


> Может лучше массивом из байт, а не строками. Зачем тратить
> время на конвертацию?

Какое время? Ничего никуда не конвертируется.
Символы цифр -- это такие же байты как любые другие.


 
Anatoly Podgoretsky ©   (2008-05-27 11:38) [12]

Только $31 и $1 не одно и тоже, и тем более если если эти байты Integer, а не BCD


 
Style ©   (2008-05-27 11:46) [13]


> Только $31 и $1 не одно и тоже, и тем более если если эти
> байты Integer, а не BCD


естесно, имеется ввиду преобразование одного символа из строки в byte, вернее даже в type TDigit = 0..9


 
Slym ©   (2008-05-28 04:34) [14]

FGInt


 
KSergey ©   (2008-05-28 08:05) [15]

> Рамиль ©   (27.05.08 10:04) [9]
> Может лучше массивом из байт, а не строками. Зачем тратить
> время на конвертацию?

По-моему, эффективнее будет хранить в виде рекордов из интов и работать в частями рекорда как с целыми числами (расширяя временно до int64, например, не забывая при этом учитывать переносы между частями. Это много быстрее будет, я думаю, если скорость хоть сколько-нибудь важна, конечно.

Хотя, понятно, для этого уже написаны готоыве библиотеки :)


 
inoremap   (2008-05-28 09:44) [16]

http://kladovka.net.ru/index.cgi?pid=list&rid=459


 
Ega23 ©   (2008-05-28 09:55) [17]

FGInt, и нефиг велосипед изобретать...


 
Romkin ©   (2008-05-28 11:59) [18]

Вот почему никто не вспоминает о TBCD?
Ведь есть, 31 знак.
var
 A, B: Variant;
begin
 A := VarFMTBcdCreate("12555645345",30,0);
 B := VarFMTBcdCreate("234234423423434352345345",30,0);
 B := B + A;
 ShowMessage(B.AsString);
end;



Страницы: 1 вся ветка

Текущий архив: 2009.08.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
1-1211907969
Smart
2008-05-27 21:06
2009.08.16
Нужен алгоритм.


15-1245060539
12
2009-06-15 14:08
2009.08.16
Автоматизировать работу с КПК. (Копировать файлы)


15-1244925005
Юрий
2009-06-14 00:30
2009.08.16
С днем рождения ! 14 июня 2009 воскресенье


2-1245399017
Б
2009-06-19 12:10
2009.08.16
Скорость алгоритма.


3-1221819683
Igor
2008-09-19 14:21
2009.08.16
Выгрузка данных из таблицы в Oracle