Esempio n. 1
0
        /// <summary>
        /// 某个月偿还的本金
        /// </summary>
        public double PaymentCapitalMonth(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                return(0);
            }

            return(PaymentAt(time) - PaymentInterestAt(time));
        }
Esempio n. 2
0
        /// <summary>
        /// 剩余的利息总和
        /// </summary>
        /// <param name="time"></param>
        /// <returns></returns>
        public double LeftInterestAt(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                time = OnDebtTime.AddMonths((int)TimeLengthMonth);
            }

            return(LeftDebtAt(time) - LeftCapitalAt(time));
        }
Esempio n. 3
0
        /// <summary>
        /// 每月偿还的本金
        /// </summary>
        public double PaymentCapitalMonth(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                return(0);
            }

            return(sumDebt / TimeLengthMonth);
        }
Esempio n. 4
0
        public double LeftDebtAt(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                time = OnDebtTime.AddMonths((int)TimeLengthMonth);
            }

            return(GetSumPayment() - FinishedPaymentSumAt(time));
        }
Esempio n. 5
0
        /// <summary>
        /// 获取等额本金需要的总还款额
        /// </summary>
        /// <returns></returns>
        public double GetSumPayment()
        {
            double sumPaymentAmount = 0.0;

            for (int i = 0; i < TimeLengthMonth; i++)
            {
                sumPaymentAmount += PaymentAt(OnDebtTime.AddMonths(i + 1));
            }
            return(sumPaymentAmount);
        }
Esempio n. 6
0
        public double FinishedPaymentSumAt(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                time = OnDebtTime.AddMonths((int)TimeLengthMonth);
            }

            int monthIndex = GetMonthIndex(time);

            return(monthIndex * PaymentAt(time));
        }
Esempio n. 7
0
        /// <summary>
        /// 在某个月(已供完本月的)还剩余要还的本金
        /// </summary>
        /// <param name="time"></param>
        /// <returns></returns>
        public double LeftCapitalAt(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                return(0);
            }

            int i = GetMonthIndex(time);

            return(sumDebt - i * PaymentCapitalMonth(OnDebtTime.AddMonths(i)));
        }
Esempio n. 8
0
        /// <summary>
        /// 在某个月偿还的利息
        /// </summary>
        /// <param name="monthIndex"></param>
        /// <returns></returns>
        public double PaymentInterestAt(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                return(0);
            }
            int monthIndex = GetMonthIndex(time);

            if (monthIndex < 0)
            {
                throw new ArgumentException("月索引小于0");
            }
            return((sumDebt - (monthIndex - 1) * PaymentCapitalMonth(OnDebtTime.AddMonths(monthIndex))) * MonthDebtRate);
        }
Esempio n. 9
0
        /// <summary>
        /// 在某个月(已供完本月的)还剩余要还的本金
        /// </summary>
        /// <param name="time"></param>
        /// <returns></returns>
        public double LeftCapitalAt(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                return(0);
            }
            int    mi  = GetMonthIndex(time);
            double sum = 0;

            for (int i = 1; i <= mi; i++)
            {
                sum += PaymentCapitalMonth(OnDebtTime.AddMonths(i));
            }
            return(sumDebt - sum);
        }
Esempio n. 10
0
        public double PaymentAt(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                return(0);
            }
            var payment = sumDebt * MonthDebtRate *
                          Math.Pow((1 + MonthDebtRate), TimeLengthMonth) /
                          ((Math.Pow((1 + MonthDebtRate), TimeLengthMonth)) - 1);

            if (payment < 0)
            {
                throw new LessOrEquZeroException("还款金额");
            }
            return(payment);
        }
Esempio n. 11
0
        /// <summary>
        /// 已经偿还的本金总和
        /// </summary>
        /// <param name="time"></param>
        /// <returns></returns>
        public double FinishedInterestSumAt(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                time = OnDebtTime.AddMonths((int)TimeLengthMonth);
            }

            int    monthIndex = GetMonthIndex(time);
            double sum        = 0;

            for (int i = 1; i <= monthIndex; i++)
            {
                sum += PaymentInterestAt(OnDebtTime.AddMonths(i));
            }
            return(sum);
        }
Esempio n. 12
0
        /// <summary>
        /// 截止到某个时间,已经偿还的金额
        /// </summary>
        /// <param name="time"></param>
        /// <returns></returns>
        public double FinishedPaymentSumAt(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                time = OnDebtTime.AddMonths((int)TimeLengthMonth);
            }

            time = DateTime.Parse(time.ToString("yyyy-MM-01"));
            double paymentAmount = 0.0;

            for (DateTime i = OnDebtTime; i < time; i = i.AddMonths(1))
            {
                paymentAmount += PaymentAt(i.AddMonths(1));
            }
            return(paymentAmount);
        }
Esempio n. 13
0
        public double PaymentInterestAt(DateTime time, DateTime bigRepayTime, double sumDebt1)
        {
            try
            {
                if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
                {
                    return(0);
                }

                int    monthIndex = GetMonthIndex(bigRepayTime, time);
                double inter      = 0;
                if (monthIndex == 1)
                {
                    inter = sumDebt1 * MonthDebtRate;
                }
                else
                {
                    double beforeInterSum = 0;
                    for (int i = 1; i < monthIndex; i++)
                    {
                        if (!dictInterBefore.ContainsKey(i))
                        {
                            dictInterBefore.Add(i, PaymentInterestAt(OnDebtTime.AddMonths(i)));
                        }
                        beforeInterSum += dictInterBefore[i];
                    }
                    inter = (sumDebt1 - ((monthIndex - 1) * PaymentAt(OnDebtTime.AddMonths(monthIndex)) - beforeInterSum)) * MonthDebtRate;
                }
                if (inter < 0)
                {
                    //throw new LessOrEquZeroException("利息");
                    return(inter);
                }
                if (!dictInterBefore.ContainsKey(monthIndex))
                {
                    dictInterBefore.Add(monthIndex, inter);
                }
                return(inter);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 14
0
        /// <summary>
        /// 显示某个月的下一个月的还款额度
        /// </summary>
        /// <param name="monthIndex"></param>
        /// <returns></returns>
        public double ShowPaymentNextTo(DateTime time)
        {
            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                return(0);
            }

            int monthIndex = GetMonthIndex(time);

            if (monthIndex < 0)
            {
                throw new ArgumentException("月索引小于0");
            }
            double capital  = sumDebt / TimeLengthMonth;//还款本金是不变的
            double interest = 0.0;

            interest = (sumDebt - monthIndex * capital) * MonthDebtRate;
            return(capital + interest);
        }
Esempio n. 15
0
        /// <summary>
        /// 显示某个月的下多个月的还款额度
        /// </summary>
        /// <param name="monthIndex"></param>
        /// <param name="showMonths"></param>
        /// <returns></returns>
        public List <double> ShowPaymentNextTo(DateTime time, int showMonths)
        {
            var rtnList = new List <double>();

            if (OnDebtTime.AddMonths((int)TimeLengthMonth) < time) //如果贷款已经还完
            {
                for (int i = 0; i < showMonths; i++)
                {
                    rtnList.Add(0);
                }
                return(rtnList);
            }

            for (int i = 0; i < showMonths; i++)
            {
                rtnList.Add(ShowPaymentNextTo(time.AddMonths(i)));
            }
            return(rtnList);
        }
Esempio n. 16
0
 /// <summary>
 /// 获取等额本金需要的总还款额
 /// </summary>
 /// <returns></returns>
 public double GetSumPayment()
 {
     return(PaymentAt(OnDebtTime.AddMonths(-1)) * TimeLengthMonth);
 }