Profectus/src/util/bignum.ts

47 lines
1.7 KiB
TypeScript
Raw Normal View History

2021-05-26 01:57:02 +00:00
// Import Decimal and numberUtils from a different file to globally change which big num library gets used
// This way switching out big number libraries just needs to happen here, not every file that needs big numbers
2022-06-27 00:17:22 +00:00
import type { DecimalSource as RawDecimalSource } from "lib/break_eternity";
2022-03-04 03:39:48 +00:00
import Decimal, * as numberUtils from "util/break_eternity";
export const {
exponentialFormat,
commaFormat,
regularFormat,
format,
formatWhole,
formatTime,
toPlaces,
formatSmall,
invertOOM
2021-05-26 01:57:02 +00:00
} = numberUtils;
export type DecimalSource = RawDecimalSource;
2022-07-10 03:09:25 +00:00
declare global {
2022-12-27 05:17:07 +00:00
/** Augment the window object so the big num functions can be accessed from the console. */
2022-07-10 03:09:25 +00:00
interface Window {
Decimal: typeof Decimal;
exponentialFormat: (num: DecimalSource, precision: number, mantissa: boolean) => string;
commaFormat: (num: DecimalSource, precision: number) => string;
regularFormat: (num: DecimalSource, precision: number) => string;
format: (num: DecimalSource, precision?: number, small?: boolean) => string;
formatWhole: (num: DecimalSource) => string;
formatTime: (s: number) => string;
toPlaces: (x: DecimalSource, precision: number, maxAccepted: DecimalSource) => string;
formatSmall: (x: DecimalSource, precision?: number) => string;
invertOOM: (x: DecimalSource) => Decimal;
}
}
window.Decimal = Decimal;
window.exponentialFormat = exponentialFormat;
window.commaFormat = commaFormat;
window.regularFormat = regularFormat;
window.format = format;
window.formatWhole = formatWhole;
window.formatTime = formatTime;
window.toPlaces = toPlaces;
window.formatSmall = formatSmall;
window.invertOOM = invertOOM;
export default Decimal;