Função Javascript para Múltiplos e Submúltiplos
Escrito por
Lucas Teske
em
em
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 😀