public void ThenOsValoresDoJurosDasParcelasPodemSerRepresentadosEmAteQuatroCasasDecimais() { foreach (var item in this.MassaBuilder.Compra.Parcelas.ToList()) { var casasDecimais = AtributosDeNumeros.ObterCasasDecimais(item.Juros); Assert.IsTrue(casasDecimais <= 4); } }
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); } }
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))); }