JSFiddle - React, Tailwind, and code Playground

by lbstr

HTML

<ul></ul>

JavaScript

var format = function(num) {
    var suffix = '',
        scale = 1,
        sigFigs = 3,
        formatted;
    
    if (num >= 1) {
        if (num > 999999999999) {
            suffix = 'T';
            scale = 1000000000000;
        }
        else if (num > 999999999) {
            suffix = 'B';
            scale = 1000000000;
        }
        else if (num > 999999) {
            suffix = 'M';
            scale = 1000000;
        }
        else if (num > 999) {
            suffix = 'K';
            scale = 1000;
        }
        else {
            sigFigs = 4;
        }
        
        formatted = (num / scale).toPrecision(sigFigs) + suffix;
    }
    else {
        formatted = parseFloat(num.toFixed(3), 10);
    }

    return formatted;
};

var log = function(msg){
    var ul = log.ul || (log.ul = document.getElementsByTagName('ul')[0]);
    var li = document.createElement('li');
    li.innerHTML = msg;
    ul.appendChild(li);
};

var f = function(num){
    log(num + " => " + format(num));
};


f(0.12);
f(1000000);
f(0.00123456789012345);
f(0.0123456789012345);
f(0.123456789012345);
f(1.23456789012345);
f(12.3456789012345);
f(123.456789012345);
f(1234.56789012345);
f(12345.6789012345);
f(123456.789012345);
f(1234567.89012345);
f(12345678.9012345);
f(123456789.012345);
f(1234567890.12345);
f(12345678901.2345);
f(123456789012.345);
f(1234567890123.45);
f(12345678901234.5);
f(123456789012345);