Skip to main content
Provides safe integer types and arbitrary-precision decimal arithmetic to prevent JavaScript number precision issues when handling token amounts.
npm install @cosmjs/math

Uint32

32-bit unsigned integer. Range: 0 to 4,294,967,295.
MethodParametersReturns
constructorinput: numberUint32
fromString (static)str: stringUint32
fromBytes (static)bytes: ArrayLike<number>, endianness?: "be" | "le" (default "be")Uint32
toBytesBigEndianUint8Array
toBytesLittleEndianUint8Array
toNumbernumber
toStringstring
toBigIntbigint

Uint53

53-bit unsigned integer (JavaScript safe integer range). Range: 0 to 9,007,199,254,740,991.
MethodParametersReturns
constructorinput: numberUint53
fromString (static)str: stringUint53
toNumbernumber
toStringstring
toBigIntbigint

Int53

53-bit signed integer. Range: -9,007,199,254,740,991 to 9,007,199,254,740,991.
MethodParametersReturns
constructorinput: numberInt53
fromString (static)str: stringInt53
toNumbernumber
toStringstring
toBigIntbigint

Uint64

64-bit unsigned integer. Uses bigint internal representation for values beyond JavaScript’s safe integer range.
MethodParametersReturns
fromString (static)str: stringUint64
fromNumber (static)input: number (must be a safe integer)Uint64
fromBytes (static)bytes: ArrayLike<number>, endianness?: "be" | "le" (default "be")Uint64
toBytesBigEndianUint8Array
toBytesLittleEndianUint8Array
toNumbernumber
toStringstring
toBigIntbigint
import { Uint64 } from "@cosmjs/math";

const large = Uint64.fromString("9007199254740993");
large.toString(); // "9007199254740993"

Decimal

Arbitrary-precision decimal type for safe financial calculations. Internally stores values as integer atomics with a fixed fractional digit count.

Static Methods

MethodParametersReturns
fromAtomicsatomics: string | bigint, fractionalDigits: numberDecimal
fromUserInputinput: string, fractionalDigits: numberDecimal
zerofractionalDigits: numberDecimal
onefractionalDigits: numberDecimal
comparea: Decimal, b: Decimalnumber (< 0 if a < b, > 0 if a > b, 0 if equal)

Instance Methods

MethodParametersReturns
plusother: DecimalDecimal
minusother: DecimalDecimal
multiplyb: Uint32 | Uint53 | Uint64Decimal
floorDecimal
ceilDecimal
negDecimal
absDecimal
isNegativeboolean
adjustFractionalDigitsnewFractionalDigits: numberDecimal
equalsother: Decimalboolean
isLessThanother: Decimalboolean
isLessThanOrEqualother: Decimalboolean
isGreaterThanother: Decimalboolean
isGreaterThanOrEqualother: Decimalboolean
toStringstring
toFloatApproximationnumber

Instance Properties

PropertyTypeDescription
atomicsstringValue in smallest unit
fractionalDigitsnumberNumber of decimal places

Usage

import { Decimal, Uint32 } from "@cosmjs/math";

const amount = Decimal.fromAtomics("1000000", 6);
amount.toString(); // "1"
amount.atomics;    // "1000000"

const fee = Decimal.fromAtomics("5000", 6);
const total = amount.plus(fee);
total.toString(); // "1.005"
total.atomics;    // "1005000"

const quantity = new Uint32(3);
const cost = amount.multiply(quantity);
cost.toString(); // "3"