Beispiel #1
0
 public void ThenOsValoresDoJurosDasParcelasPodemSerRepresentadosEmAteQuatroCasasDecimais()
 {
     foreach (var item in this.MassaBuilder.Compra.Parcelas.ToList())
     {
         var casasDecimais = AtributosDeNumeros.ObterCasasDecimais(item.Juros);
         Assert.IsTrue(casasDecimais <= 4);
     }
 }
Beispiel #2
0
        public void ThenOsValoresDaCompraComoOValorDasParcelasEmontanteDevemConterDuasCasasDecimais()
        {
            var montante = this.MassaBuilder.Compra.CalcularMontante();
            var casasDecimaisMontante = AtributosDeNumeros.ObterCasasDecimais(montante);

            Assert.IsTrue(casasDecimaisMontante <= 2);

            foreach (var item in this.MassaBuilder.Compra.Parcelas.ToList())
            {
                var casasDecimaisValorParcela = AtributosDeNumeros.ObterCasasDecimais(item.Valor);
                Assert.IsTrue(casasDecimaisValorParcela <= 2);
            }
        }
Beispiel #3
0
        public static decimal CalcularParcela(decimal valorTotal, decimal juros, int parcelas)
        {
            // formula -> R = V x (juros / 1 - (1 + Juros)^-parcelas)
            // intervalo entre 0.000001... ate 99.999999...

            var somaDoJuros = 1 + juros;

            var casasDecimais = AtributosDeNumeros.ObterCasasDecimais(somaDoJuros);

            var denominador = ObterDenominador(casasDecimais);
            var numerador   = somaDoJuros * denominador;

            var potenciaNumerador   = CalcularPotencia(numerador, parcelas);
            var potenciaDenominador = CalcularPotencia(denominador, parcelas);

            var calculoDaPotencia = (potenciaDenominador / potenciaNumerador);

            return(valorTotal * (juros / (1 - calculoDaPotencia)));
        }