Função Javascript para Múltiplos e Submúltiplos

Bom, vocês devem ter visto meu tópico anterior sobre Função Javascript para Submúltiplos e eu resolvi fazer uma função mais completa. Agora abrangendo mais submúltiplos e também abrangendo múltiplos. O conceito é o mesmo do anterior, gerar o valor com múltiplo ou submúltiplo e arredondar para duas casas decimais apenas. A função fica assim:

function toNotationUnit(v) {
	var unit;
	var submultiplo = ["","m","µ","n","p","f","a","z","y"];
	var multiplo 	= ["","k","M","G","T","P","E","Z","Y"]
	var counter= 0;
	var value = v;
	if(value < 1) {
		while(value < 1) {
			counter++;
			value=value*1e3;
			if(counter==8) break;
		}
		unit = submultiplo[counter];
	}else{
		while(value >= 1000) {
			counter++;
			value=value/1e3;
			if(counter==8) break;
		}
		unit = multiplo[counter];
	}
	value = Math.round(value*1e2)/1e2;
	return [value,unit];
}

Como podem ver, eu coloquei para retornar uma array contendo na sua posição 0 o valor arredondado em duas casas, e na posição 1 a unidade, assim você poderá tratar da maneira que bem entender o resultado. Para usá-la é bem simples, vamos a um exemplo em HTML:

<script type="text/javascript">
function toNotationUnit(v) {
	var unit;
	var submultiplo = ["","m","µ","n","p","f","a","z","y"];
	var multiplo 	= ["","k","M","G","T","P","E","Z","Y"]
	var counter= 0;
	var value = v;
	if(value < 1) {
		while(value < 1) {
			counter++;
			value=value*1e3;
			if(counter==8) break;
		}
		unit = submultiplo[counter];
	}else{
		while(value >= 1000) {
			counter++;
			value=value/1e3;
			if(counter==8) break;
		}
		unit = multiplo[counter];
	}
	value = Math.round(value*1e2)/1e2;
	return [value,unit];
}

function pegarvalor() {
	var i = parseFloat(document.getElementById('valor').value);
	var t = toNotationUnit(i);
	document.getElementById('resultado').innerHTML = t[0]+t[1];
}
</script>

Insira um valor: <input type="text" id="valor" name="valor">
<input type="button" onClick="pegarvalor();" value="Pegar"><BR>
Resultado: <div id="resultado"></div>

Ou se preferir no Codepad: http://codepad.org/TSn8wtA1

Façam bom uso 😀