Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Внизбольшие числа Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c