// Don't do this (unsafe)const largeNumber = 1000000000000000000 // 10^18Uint(largeNumber) // May lose precision!// Do this instead (safe)const largeBigInt = 1000000000000000000nUint.fromBigInt(largeBigInt) // Accurate// Or use stringUint("1000000000000000000") // Accurate
// Must be integerUint(100) // OKUint(0) // OK// Decimal values throwUint(3.14) // Error: Must be integerUint(1.5) // Error: Must be integerUint(100.1) // Error: Must be integer
// When you have number but need Uintfunction processNumber(n: number): void { if (n < 0 || !Number.isInteger(n)) { throw new Error("Invalid number") } const uint = Uint(n) // Use uint...}
function safeFromNumber(n: number): BrandedUint256 { if (!Number.isSafeInteger(n)) { throw new Error("Number exceeds safe integer range - use BigInt") } if (n < 0) { throw new Error("Number must be non-negative") } return Uint(n)}