mirror of
https://github.com/orionprotocol/sdk.git
synced 2026-04-06 21:18:12 +03:00
Initial commit
This commit is contained in:
25
src/utils/normalizeNumber.ts
Normal file
25
src/utils/normalizeNumber.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import BigNumber from 'bignumber.js';
|
||||
import { ethers } from 'ethers';
|
||||
|
||||
/**
|
||||
* Converts denormalized ("human-readable") number to normalized ("machine-readable") number.
|
||||
* @param input Any numeric value
|
||||
* @param decimals Blockchain asset precision
|
||||
* @param roundingMode Rounding mode
|
||||
* @returns ethers.BigNumber
|
||||
*/
|
||||
export default function normalizeNumber(
|
||||
input: BigNumber.Value,
|
||||
decimals: BigNumber.Value,
|
||||
roundingMode: BigNumber.RoundingMode,
|
||||
) {
|
||||
const decimalsBN = new BigNumber(decimals);
|
||||
if (!decimalsBN.isInteger()) throw new Error(`Decimals '${decimals.toString()}' is not an integer`);
|
||||
const inputBN = new BigNumber(input);
|
||||
return ethers.BigNumber.from(
|
||||
inputBN
|
||||
.multipliedBy(new BigNumber(10).pow(decimals))
|
||||
.integerValue(roundingMode)
|
||||
.toString(),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user