Ir para conteúdo
  • Cadastre-se

Felipe Benutti

Membros
  • Total de ítens

    1
  • Registro em

  • Última visita

Posts postados por Felipe Benutti

  1. Opa, muito obrigado pelo código base, man!!

     

    Me serviu muito, passei ele para JavaScript.

    Segue abaixo o que eu fiz, se alguém usar e encontrar algum bug, por favor, reporte para arrumar-mos!

     

    function round_abnt(nValor, nDecimais) {
    
    	var nRetorno = nValor;
    	spl = nValor.toString().split(".");
    	var cDecimais = spl[1];
    	var nSubsequente = nDecimais;
    
    	if (nDecimais < 1) {
    		return parseInt(nRetorno);
    	}
    	
    	if (cDecimais.length <= nDecimais) {
    		return parseFloat(nRetorno);
    	}
    	
    	//Se a casa decimal SUBSEQUENTE for DIFERENTE de 5
    	if (cDecimais.substr(nSubsequente,1) > '5' ||  cDecimais.substr(nSubsequente,1) < '5') {
    		nRetorno = nRetorno.toFixed(2); //Math.round((nRetorno + 0.00001) * 100) / 100; //ARREDONDA
    	}
    	//Se a casa decimal SUBSEQUENTE for IGUAL a 5
    	else if (cDecimais.substr(nSubsequente, 1) == '5') { 
    	
    		//Se a casa decimal que será CONSERVADA, for IMPAR
    		if ((cDecimais.substr(nDecimais-1, 1) % 2) != 0) {
    			nRetorno = nRetorno.toFixed(2); //Math.round((nRetorno + 0.00001) * 100) / 100; //ARREDONDA
    		}
    		//Se a casa decimal que será CONSERVADA, for PAR
    		else 
    		//Se APÓS a casa decimal SUBSEQUENTE, houver ALGUM algarismo MAIOR que ZERO
    		if ( cDecimais.substr(nSubsequente+1, 1) > 0 ) {
    			nRetorno = nRetorno.toFixed(2); //Math.round((nRetorno + 0.00001) * 100) / 100; //ARREDONDA
    		}
    		//Se APÓS a casa decimal SUBSEQUENTE, não houver NENHUM outro algarismo ou TODOS forem iguais a ZERO
    		else {
    			//TRUNCA (Esse é o único momento em que o "arredondamento ABNT" se diferencia do "arredondamento normal")
    			nRetorno = Truncate(nValor, nDecimais);
    		}
    	}
    	return parseFloat(nRetorno);
    }
    
    function Truncate(nValor, nDecimais) {
    
    	var nRetorno = nValor;
    	spl = nValor.toString().split(".");
    	var cDecimais = spl[1];
    
    	if (nDecimais < 1) {
    		return parseInt(nRetorno);
    	}
    
    	if (cDecimais.length <= nDecimais) {
    		return nRetorno;
    	}
    
    	//Pega a parte inteira do número e concatena com a substring sem alterar, pois é PAR e vai manter!
    	nRetorno = parseInt(nValor.toString()) + '.' + cDecimais.substr(0, nDecimais);
    	nRetorno = parseFloat(nRetorno);
    
    	return nRetorno;
    }
    
    :D :D
    • Curtir 1
    • Obrigado 1
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...