JavaScript
console.clear();
var tests0 = [
1,
5,
455,
667,
999,
1000, 1001, 1040, 1300, 1900, 2300, 3400, 4900, 9800, 9999,
10959, //10k
12386,
13930,
40782,
80384,
99999,
103989,//103k
193849,
293749,
405839,
999999,//999k
1208476,//1.2m
1984736,
3805857,//3.8m
6082746,//6m
9999999,//9.9m
13958759,//13m
50827633,//50m
99999999,//99m
111111111,//111m
555555555,//555m
999999999,//999m
1111111111,//1.1B
5555555555,//5.5B
9999999999,//9.9B
45456567678, // 45B
345456567678, // 345B
1345456567678, // 1.3T
];
var tests = [
5, //5
55, //55
555, //555
999, //999
1111, //1.1k
5555, //5.5k
9999, //9.9k
11111, // 11k
55555, // 55k
99999, // 99k
111111, //111k
555555, //555k
999999, //999k
1200100, //1.2m
9999999, //9.9m
13000100, //13m
999000000, //999m
1000000000, //1B
1333222111, //1.3b
9900000000, //9.9b
15000000000, //15b
150000000000, //150b
999000000000, //999b
1000000000000, //1t
1800000000000, //1.8t
8800000000000, //8.8t
18800000000000, //18t
98800000000000, //98t
933800000000000, //933t
1000000000000000, //1000t
1233800000000000, //1233t
982374987239487239487239487230487, //982374987239487200000T
];
var stringify3 = function (number) {
var k = 1000;
var m = 1000000;
var b = 1000000000;
var t = 1000000000000;
var makeString = function (n, magnitude, postfix, fraction) {
// fraction = 10 means show 10ths, e.g. 1.1, 3.5, 2.9
// fraction = 1 means show 1ths, e.g. whole integers
return Math.floor(n / (magnitude / fraction)) / fraction + postfix;
};
if (number < k) {
return number;
} else if (number < k * 10) {
return makeString(number, k, "K", 10);
} else if (number < m) {
return makeString(number, k, "K", 1);
} else if (number < m * 10) {
return makeString(number, m, "M", 10);
} else if (number < b) {
...