@radixdlt/uint256

unsigned 256bit integer type for javascript and typescript

Usage no npm install needed!

<script type="module">
  import radixdltUint256 from 'https://cdn.skypack.dev/@radixdlt/uint256';
</script>

README

uint256

Unsigned 256 bit Integer type

npm

Install

npm install uint256

Usage

import { UInt256, U256 } from 'uint256';

const now = Date.now();
const scale = 18;
const digits = U256(10).pow(scale);

const POUND = (number: number) => U256(number).mul(digits);
const toPound = (number: UInt256, fraction = false) => {
  if (!fraction) {
    return String(number.div(digits));
  }
  const str = String(number);
  if (scale < 1) {
    return str;
  }
  return `${str.substring(0, str.length - scale)}.${str.substr(-scale)}`;
};

const a = POUND(11000);
const b = POUND(20000);

console.log('scale', scale);
console.log('a', toPound(a));
console.log('b', toPound(b));
console.log('mul', toPound(a.mul(b).div(digits)));
console.log('add', toPound(a.add(b)));
console.log('div', toPound(b.div(a.div(digits)), true));
console.log('sub', toPound(b.sub(a)));
console.log('elapsed(ms)', Date.now() - now);

// scale 18
// a 11000
// b 20000
// mul 220000000
// add 31000
// div 1.818181818181818181
// sub 9000
// elapsed(ms) 8