![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
20-значная цифра [D7, WinXP]
aidyn © (2008-05-26 13:10:00)у меня есть строковая переменная, состоящая из 20 цифр... с этим значением мне надо провести арифметические операции, но вот столкнулся с проблемой конвертации... Integer такое огромное значение не принимает, пробовал ставить Extended, но тогда при конвертации StrToFloat почему-то получается 0...
Подскажите что делать?
Romkin (2008-05-28 11:59:00) [1]Вот почему никто не вспоминает о TBCD?
Ведь есть, 31 знак.
var
A, B: Variant;
begin
A := VarFMTBcdCreate('12555645345',30,0);
B := VarFMTBcdCreate('234234423423434352345345',30,0);
B := B + A;
ShowMessage(B.AsString);
end;
Ega23 (2008-05-28 09:55:00) [2]FGInt, и нефиг велосипед изобретать...
inoremap (2008-05-28 09:44:00) [3]http://kladovka.net.ru/index.cgi?pid=list&rid=459
KSergey (2008-05-28 08:05:00) [4]> Рамиль © (27.05.08 10:04) [9]
> Может лучше массивом из байт, а не строками. Зачем тратить
> время на конвертацию?
По-моему, эффективнее будет хранить в виде рекордов из интов и работать в частями рекорда как с целыми числами (расширяя временно до int64, например, не забывая при этом учитывать переносы между частями. Это много быстрее будет, я думаю, если скорость хоть сколько-нибудь важна, конечно.
Хотя, понятно, для этого уже написаны готоыве библиотеки :)
Slym (2008-05-28 04:34:00) [5]FGInt
Style (2008-05-27 11:46:00) [6]
> Только $31 и $1 не одно и тоже, и тем более если если эти
> байты Integer, а не BCD
естесно, имеется ввиду преобразование одного символа из строки в byte, вернее даже в type TDigit = 0..9
Anatoly Podgoretsky (2008-05-27 11:38:00) [7]Только $31 и $1 не одно и тоже, и тем более если если эти байты Integer, а не BCD
DiamondShark (2008-05-27 11:32:00) [8]
> Может лучше массивом из байт, а не строками. Зачем тратить
> время на конвертацию?
Какое время? Ничего никуда не конвертируется.
Символы цифр -- это такие же байты как любые другие.
Style (2008-05-27 11:31:00) [9]а че там конвертировать то
ord(data[pos])-$30
Рамиль (2008-05-27 10:04:00) [10]Может лучше массивом из байт, а не строками. Зачем тратить время на конвертацию?
Gadenysh (2008-05-27 08:16:00) [11]приводить посимвольно к integer (5 пишем один в уме)
как сказали, второй класс
aidyn (2008-05-27 07:42:00) [12]
> При желании можно выполнять арифметические операции над
> строковыми представлениями чисел любой длины.
А как прводить арифметические операции над строков. переменными? подскажите плиз
tesseract (2008-05-26 21:46:00) [13]
> арифметические операции над строковыми представлениями
> чисел любой длины.
Numeric, таки работает, имееться в виду ?
Denis__ (2008-05-26 19:37:00) [14]
> Dimka Maslov © (26.05.08 15:59) [4]
Полностью согласен. И делается не так уж и сложно!
Dimka Maslov (2008-05-26 15:59:00) [15]Школа. 2 класс. Сложение, вычитание, умножение и деление в столбик. При желании можно выполнять арифметические операции над строковыми представлениями чисел любой длины.
aidyn (2008-05-26 15:50:00) [16]Вот именно, что аппетиты снизить не могу :), наоборот после некоторых операций цифра должна увеличиться до 22 знаков.
Anatoly Podgoretsky (2008-05-26 13:34:00) [17]Если аппетиты снизишь до 19 знаков, то Int64 дает 9 223 372 036 854 775 807
Stas (2008-05-26 13:28:00) [18]Нужна спец. библиотека, типа как эта http://gmplib.org/
незнаю к Delphi можно подключить или нет