Главная страница
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.039 c
14-1109082292
ParaSenok
2005-02-22 17:24
2005.03.13
Чат


3-1108327778
Коля
2005-02-13 23:49
2005.03.13
Как узнать индекс поля где находится указатель в Query?


14-1108882090
SOFS
2005-02-20 09:48
2005.03.13
Какие языки програмрования будут востребованы в будущем?


9-1103540530
webpauk
2004-12-20 14:02
2005.03.13
DirectDraw


3-1107957127
le
2005-02-09 16:52
2005.03.13
комбобоксы в табличном режиме показа данных