Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Format Numbers to always show only first 4 decimal numbers

I’m trying to print my numbers that will show only the first 4 numbers of the decimal and not everything. Unfortunately I didn’t find a solution, I tried some functions attempts but nothing worked out, it always ended up like a number that is .toFixed(4)

//Non working function for my purpose...
function formatToFourDecimals(num) {
    return (Math.round(num * 10000) / 10000).toFixed(4);
  }

  const TOSHI_price_WETH = "0.000000010528483311"; // Goal 0.00000001052
  const TOSHI_price_USD = "0.000018256390061274"; // Goal 0.00001825

  const example1 = "0.000000010528483311"; //Goal 0.00000001052
  const example2 = "0.000018256390061274"; //Goal 0.00001825
  const example3 = "0.00035256565612116112161"; //Goal 0.0003525
  const example4 = "0.0121215121313131313131313"; //Goal 0.01212

  console.log(formatToFourDecimals(example1)); // Expected 0.00000001052
  console.log(formatToFourDecimals(example2)); // Expected 0.00001825
  console.log(formatToFourDecimals(example3)); // Expected 0.0003525
  console.log(formatToFourDecimals(example4)); // Expected 0.01212

  console.log("$TOSHI price:", formatToFourDecimals(TOSHI_price_WETH), "WETH"); // Expected 0.00000001052 WETH
  console.log("$TOSHI price USD:", formatToFourDecimals(TOSHI_price_USD), "$"); // Expected 0.00001825 $

Goal:

instead of 0.000000010528483311 show 0.00000001052

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

instead of 0.000018256390061274 show 0.00001825

instead of 32.3232326262623 show 32.3232

etc…

Outputs:

0.0000
0.0000
0.0004
0.0121
$TOSHI price: 0.0000 WETH
$TOSHI price USD: 0.0000 $

>Solution :

toFixed(4) returns the number rounded to 4 digits after the decimal point. There’s nothing built-in that starts counting after the leading zeroes.

You can convert the number to a string, then use a regular expression to match zeroes after the decimal point and then 4 following digits.

function formatToFourDecimals(num) {
  num = String(num);
  let match = num.match(/^\d+\.0*\d{0,4}/);
  if (match) {
    return match[0];
  }
  return num;
}

const TOSHI_price_WETH = "0.000000010528483311"; // Goal 0.00000001052
const TOSHI_price_USD = "0.000018256390061274"; // Goal 0.00001825

const example1 = "0.000000010528483311"; //Goal 0.00000001052
const example2 = "0.000018256390061274"; //Goal 0.00001825
const example3 = "0.00035256565612116112161"; //Goal 0.0003525
const example4 = "0.0121215121313131313131313"; //Goal 0.01212

console.log(formatToFourDecimals(example1)); // Expected 0.00000001052
console.log(formatToFourDecimals(example2)); // Expected 0.00001825
console.log(formatToFourDecimals(example3)); // Expected 0.0003525
console.log(formatToFourDecimals(example4)); // Expected 0.01212

console.log("$TOSHI price:", formatToFourDecimals(TOSHI_price_WETH), "WETH"); // Expected 0.00000001052 WETH
console.log("$TOSHI price USD:", formatToFourDecimals(TOSHI_price_USD), "$"); // Expected 0.00001825 $
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading