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

Вниз

большие числа   Найти похожие ветки 

 
Dysan ©   (2005-02-25 12:25) [0]

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


 
pasha_golub ©   (2005-02-25 12:59) [1]

Насколько большие числа? Целые или вещественные?


 
Dysan ©   (2005-02-25 13:02) [2]

очень большие. во всяком случае Int64 и Extended уже не хватает. :(


 
pasha_golub ©   (2005-02-25 13:06) [3]

Попробуй глянуть в сторону

TBcd type


 
pasha_golub ©   (2005-02-25 13:16) [4]

Для работы загляни в модуль FMTBcd.pas


{ Utility functions for TBcd access }

function BcdPrecision(const Bcd: TBcd): Word;
function BcdScale(const Bcd: TBcd): Word;
function IsBcdNegative(const Bcd: TBcd): Boolean;

{ Bcd Arithmetic}

procedure BcdAdd(const bcdIn1, bcdIn2: TBcd; var bcdOut: TBcd);
procedure BcdSubtract(const bcdIn1, bcdIn2: TBcd; var bcdOut: TBcd);
// Returns True if successful, False if Int Digits needed to be truncated
function NormalizeBcd(const InBcd: TBcd; var OutBcd: TBcd; const Prec, Scale: Word): Boolean;

procedure BcdMultiply(const bcdIn1, bcdIn2: TBcd; var bcdOut: TBcd); overload;
procedure BcdMultiply(const bcdIn: TBcd; const DoubleIn: Double; var bcdOut: TBcd); overload;
procedure BcdMultiply(const bcdIn: TBcd; const StringIn: string; var bcdOut: TBcd); overload;
procedure BcdMultiply(StringIn1, StringIn2: string; var bcdOut: TBcd); overload;
procedure BcdDivide(Dividend, Divisor: string; var bcdOut: TBcd); overload;
procedure BcdDivide(const Dividend, Divisor: TBcd; var bcdOut: TBcd); overload;
procedure BcdDivide(const Dividend: TBcd; const Divisor: Double; var bcdOut: TBcd); overload;
procedure BcdDivide(const Dividend: TBcd; const Divisor: string; var bcdOut: TBcd); overload;

{ TBcd variant creation utils }
procedure VarFMTBcdCreate(var ADest: Variant; const ABcd: TBcd); overload;
function VarFMTBcdCreate: Variant; overload;
function VarFMTBcdCreate(const AValue: string; Precision, Scale: Word): Variant; overload;
function VarFMTBcdCreate(const AValue: Double; Precision: Word = 18; Scale: Word = 4): Variant; overload;
function VarFMTBcdCreate(const ABcd: TBcd): Variant; overload;
function VarIsFMTBcd(const AValue: Variant): Boolean; overload;
function VarFMTBcd: TVarType;

// convert String/Double/Integer to BCD struct
function StrToBcd(const AValue: string): TBcd;
function TryStrToBcd(const AValue: string; var Bcd: TBcd): Boolean;
function DoubleToBcd(const AValue: Double): TBcd; overload;
procedure DoubleToBcd(const AValue: Double; var bcd: TBcd); overload;
function IntegerToBcd(const AValue: Integer): TBcd;
function VarToBcd(const AValue: Variant): TBcd;

{ From DB.pas }
function CurrToBCD(const Curr: Currency; var BCD: TBcd; Precision: Integer = 32;
 Decimals: Integer = 4): Boolean;

// Convert Bcd struct to string/Double/Integer
function BcdToStr(const Bcd: TBcd): string; overload;
function BcdToDouble(const Bcd: TBcd): Double;
function BcdToInteger(const Bcd: TBcd; Truncate: Boolean = False): Integer;

{ From DB.pas }
function BCDToCurr(const BCD: TBcd; var Curr: Currency): Boolean;
// Formatting Bcd as string
function BcdToStrF(const Bcd: TBcd; Format: TFloatFormat; const Precision, Digits: Integer): string;
function FormatBcd(const Format: string; Bcd: TBcd): string;
function BcdCompare(const bcd1, bcd2: TBcd): Integer;


Правда, по заверению знакомого, который с ними плотно работал, дословно:
"do not think bcd are a good idea.
slow like hell"


 
Dysan ©   (2005-02-25 13:19) [5]

хех like hell говоришь.
лано посмотрим.
спасибо.


 
pasha_golub ©   (2005-02-25 14:10) [6]

Dysan ©   (25.02.05 13:19) [5]
Эт не я говорю, но не верить оснований не имею. Пожалуйста. Поделись потом впечатлениями - интересно.



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

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

Наверх




Память: 0.48 MB
Время: 0.044 c
1-1109367619
Zoth
2005-02-26 00:40
2005.03.13
Делфи и мобильник


14-1108742992
Doxygen
2005-02-18 19:09
2005.03.13
DocBook


1-1109667406
Pest(Z)
2005-03-01 11:56
2005.03.13
выполнение кода вне модуля


1-1109315695
Нуждающийся в помощи
2005-02-25 10:14
2005.03.13
Бинарные операции


1-1109231329
SergeyKU
2005-02-24 10:48
2005.03.13
Запуск любых приложений из-под Делфи