chore(trading): add quantum formatting to deal ticket (#4030)

This commit is contained in:
m.ray
2023-06-07 11:49:50 +01:00
committed by GitHub
parent 43d3754c64
commit 2ba0e9a1b2
13 changed files with 206 additions and 33 deletions
+23
View File
@@ -2,6 +2,7 @@ import BigNumber from 'bignumber.js';
import {
addDecimalsFormatNumber,
addDecimalsFormatNumberQuantum,
formatNumber,
formatNumberPercentage,
isNumeric,
@@ -23,6 +24,28 @@ describe('number utils', () => {
}
);
it.each([
{ v: new BigNumber(123000), d: 5, o: '1.23', q: 0.1 },
{ v: new BigNumber(123000), d: 3, o: '123.00', q: 0.1 },
{ v: new BigNumber(123000), d: 1, o: '12,300.00', q: 0.1 },
{ v: new BigNumber(123001000), d: 2, o: '1,230,010.00', q: 0.1 },
{ v: new BigNumber(123001), d: 2, o: '1,230', q: 100 },
{ v: new BigNumber(123001), d: 2, o: '1,230.01', q: 0.1 },
{
v: BigNumber('123456789123456789'),
d: 10,
o: '12,345,678.9123457',
q: '0.00003846',
},
])(
'formats with addDecimalsFormatNumberQuantum given number correctly',
({ v, d, o, q }) => {
expect(addDecimalsFormatNumberQuantum(v.toString(), d, q)).toStrictEqual(
o
);
}
);
it.each([
{ v: new BigNumber(123), d: 3, o: '123.00' },
{ v: new BigNumber(123.123), d: 3, o: '123.123' },
+12
View File
@@ -90,6 +90,18 @@ export const formatNumberFixed = (
return getFixedNumberFormat(formatDecimals).format(Number(rawValue));
};
export const addDecimalsFormatNumberQuantum = (
rawValue: string | number,
decimalPlaces: number,
quantum: number | string
) => {
if (isNaN(Number(quantum))) {
return addDecimalsFormatNumber(rawValue, decimalPlaces);
}
const numberDP = Math.max(0, Math.log10(100 / Number(quantum)));
return addDecimalsFormatNumber(rawValue, decimalPlaces, Math.ceil(numberDP));
};
export const addDecimalsFormatNumber = (
rawValue: string | number,
decimalPlaces: number,