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));