JSFiddle - React, Tailwind, and code Playground
by Nic Fontaine
TypeScript
const f = (x:_number): string => {
// No decimals
if (x.toString().indexOf('.') < 0) {
return x.toString();
}
// Include nonzero and extra after
const significantDigits = 3;
const log = Math.log10(x);
// +- 0.01289 values
if (isNaN(log) || log < -1) {
return x.toFixed(- 1* Math.log10(Math.abs(x)) + significantDigits);
}
const decimals = x.toString().split('.')[1];
// 23.65 values
if (decimals.length <= significantDigits) {
return x.toString();
}
const digits = Math.min(decimals, significantDigits)
return x.toFixed(digits);
};
/* const f = (x) => Math.log10(x); */
console.log(f(-0.000000000000001654689807));
console.log(f(0.000000000000016546896889));
console.log(f(0.000365468));
console.log(f(0.00365468));
console.log(f(0.0365468));
console.log(f(0.365468));
console.log(f(00.0001));
console.log(f(12.345757));
console.log(f(312.345757));
console.log(f(312.000000345757));
console.log(f(312.000000));
console.log(f(312.1));
console.log(f(-312.1));
console.log(f(500));