Função Javascript para Multiplos e Submultiplos

Bom, estava montando uma outra calculadora aqui para a EnergyLabs Brasil, e quis fazer algo mais legalzinho. Fiz uma função em javascript que concatena o valor com o submúltiplo, e já faz as multiplicações necessárias além de arrendondar para duas casas decimais.

Não entendeu? Bom vou exemplificar.

Em física se usa muito múltiplos e submúltiplos para ajudar a escrever unidades. Por exemplo, estamos habituados com a unidade segundo no nosso dia a dia. Para representarmos 0,1 segundo, podemos representar como 100ms (100 milissegundos), para 0,0001 segundo, podemos representar como 100us (100 microssegundos), e assim por diante. Isso são os submúltiplos. Ao invés de escrevermos 0,0001 escrevemos 100 * 10^-6 (100 * 0,000001 que é 0,0001) ou 100us. Os mais comuns submúltiplos são:

  1. mili – m  – 10^-3
  2. micro – µ – 10^-6
  3. nano – n – 10^-9
  4. pico – p – 10^-12

Então vamos lá para a função:

function putunit(v,unit) {
	var lastunit = '';
	var units = ["m","µ","n","p"];
	var counter= 0;
	var value = v;
	while(value < 1) {
		lastunit = units[counter];
		counter++;
		value=value*1e3;
		if(counter==5) break;
	}
	value = Math.round(value*1e2)/1e2;
	return "<B>"+value+"</B> "+lastunit+unit;
}

Como usar? Bem simples:

var i = 0.015;
	var resultado = putunit(i,"s");

Quer um exemplo mais prático? Vamos lá então, uma página HTML 😀

function putunit(v,unit) {
	var lastunit = '';
	var units = ["m","µ","n","p"];
	var counter= 0;
	var value = v;
	while(value < 1) {
		lastunit = units[counter];
		counter++;
		value=value*1e3;
		if(counter==5) break;
	}
	value = Math.round(value*1e2)/1e2;
	return "<B>"+value+"</B> "+lastunit+unit;
}

function pegarvalor() {
	var i = parseFloat(document.getElementById('valor').value);
	document.getElementById('resultado').innerHTML = putunit(i,"s");
}
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 ver no Codepad: http://codepad.org/hGDQsbT1

Faça o teste e terá resultados assim:

image

image

image

Viu como é prático? Você pode usar a mesma ideia da função para os múltiplos também!