@hastom/fixed-point
Version:
Light lib for fixed point math made around native bigint
69 lines (68 loc) • 2.61 kB
TypeScript
export declare enum Rounding {
ROUND_UP = 0,
ROUND_DOWN = 1,
ROUND_CEIL = 2,
ROUND_FLOOR = 3,
ROUND_HALF_UP = 4,
ROUND_HALF_DOWN = 5,
ROUND_HALF_EVEN = 6,
ROUND_HALF_CEIL = 7,
ROUND_HALF_FLOOR = 8
}
export declare enum Decimals {
left = "left",
right = "right",
min = "min",
max = "max",
add = "add",
sub = "sub"
}
export type PrecisionResolution = Decimals | number | bigint;
export declare class FixedPoint {
static min(arg0: FixedPoint, ...args: FixedPoint[]): FixedPoint;
static max(arg0: FixedPoint, ...args: FixedPoint[]): FixedPoint;
private _base;
private _precision;
constructor(base: bigint, precision: bigint);
get base(): bigint;
get precision(): bigint;
add(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint;
plus: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
sub(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint;
minus: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
mul(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint;
times: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
multipliedBy: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
div(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint;
dividedBy: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
cmp(arg: FixedPoint, comparator: (a: bigint, b: bigint) => boolean): boolean;
eq(arg: FixedPoint): boolean;
isEqualTo: (arg: FixedPoint) => boolean;
gt(arg: FixedPoint): boolean;
isGreaterThan: (arg: FixedPoint) => boolean;
lt(arg: FixedPoint): boolean;
isLessThan: (arg: FixedPoint) => boolean;
gte(arg: FixedPoint): boolean;
isGreaterThanOrEqualTo: (arg: FixedPoint) => boolean;
lte(arg: FixedPoint): boolean;
isLessThanOrEqualTo: (arg: FixedPoint) => boolean;
neg(): FixedPoint;
negated: () => FixedPoint;
abs(): FixedPoint;
absoluteValue: () => FixedPoint;
sqrt(): FixedPoint;
squareRoot: () => FixedPoint;
isZero(): boolean;
isPositive(): boolean;
isNegative(): boolean;
floor(): FixedPoint;
ceil(): FixedPoint;
round(mode?: Rounding): FixedPoint;
setPrecision(newPrecision: bigint, rounding?: Rounding): void;
toPrecision(resultPrecision: number | bigint, rounding?: Rounding): FixedPoint;
toString(): string;
toJSON(): string;
toDecimalString(): string;
toDecimal(): number;
valueOf(): number;
}