Я все еще новичок в изучении С#, и мне было интересно, могу ли я получить некоторую помощь. Я пишу программу C# и формы Windows, чтобы пользователи могли рассчитывать свои ежемесячные платежи и проценты по ипотеке. Уравнение, которое я имею для платежей: Платеж = p * r / (1 - (1 + r) ^ (-n)) Где p - сумма кредита, r - ежемесячная процентная ставка, заданная как число от 0 (для 0 процентов) и 1 (для 100 процентов), n - срок кредита в месяцах. Тогда формула для общей суммы выплаченных процентов: общая сумма процентов = n * платеж -p
Теперь я попытался ввести все эти числа как двойные, используя метод Math.Pow для платежей, и получил неправильные расчеты. Я предполагаю, что скорость ДОЛЖНА быть десятичной, поэтому, когда я пробую их ВСЕ как десятичные, VS не нравится метод «^» или метод math.pow. Итак, мой вопрос: как вы должны использовать десятичные дроби с показателями степени? Для тех, кто хочет увидеть мой текущий код, обратите внимание, что я просто пытаюсь завершить вычисления, прежде чем я начну добавлять дополнительные операторы else.
decimal amnt = Convert.ToDecimal(txtAMNT.Text);
string Amount=Convert.ToString(txtAMNT.Text);
decimal rate = Convert.ToDecimal(txtRATE.Text);
string Rate = Convert.ToString(txtRATE.Text);
decimal time = Convert.ToDecimal(txtTIME.Text);
string Time=Convert.ToString(txtTIME.Text);
decimal monthpay;
decimal totalinterest;
decimal realrate = rate / 100;
if ((Amount == "")||(Rate == "")||(Time==""))
{
MessageBox.Show("Please fill all boxes with numbers");
}
else
{
monthpay=amnt*realrate/(1-(1+realrate)^(-time));
totalinterest=time*monthpay-amnt;
mtbMonPay.Text=monthpay.ToString("c");
mtbTotalInterest.Text=totalinterest.ToString("c");
}
Convert.ToString
делаете вещи, которые уже являются строками (например,txtAMNT.Text
)? - person Sam Axe   schedule 22.03.2015Decimal.TryParse
обычно считается лучше, чемConvert.ToDecimal
. - person Sam Axe   schedule 22.03.2015^
вы имеете в виду, что получаете синтаксическую ошибку с указаниемOperator '^' cannot be applied to operands of type 'decimal' and 'int'
? - person Sam Axe   schedule 22.03.2015Math.pow()
не может дать в качестве результата точное значение, поэтому нет смысла использовать его сdecimal
. Приведите входные данные кdouble
. - person JLRishe   schedule 22.03.2015