只有在传递某些值时,此等式才会返回NaN

时间:2015-09-25 07:55:57

标签: c# nan equation

因此,对于我的C#编程课程,我必须计算在给定余额,每月付款和APR的情况下偿还信用卡余额所需的月数。

以下是我们解释的公式:

pseudo selector :not() implemented by JSoup

这是我制作的C#版本:

months = (double)decimal.Divide(-1, 30) * (
  Math.Log(1 + (double)(balance / payment) * (1 - Math.Pow((1 + (apr / 365)), 30)))
    / Math.Log(1 + (apr / 365))
);

它适用于我尝试的每个例子,除了一个,我需要得到答案的问题中指定:

  

爱丽丝需要多少个月才能还清7,500.00美元的余额   APR价值是0.22,她每月支付125.00美元?

其输出如下:

Enter the credit card balance (example: 10000.00)
7500
Enter the monthly payment amount (example: 250.00)
125
Enter the annual percentage rate (example: 0.15)
0.22
It will take NaN months to pay off the balance.
Goodbye! Press any key to exit.

在我的调查中,我将公式插入WolframAlpha并返回两个不同的值(Mathematical formula)或许这与它有关,但我是C#的新手并且已经达到我的知识的最后。

这里发生了什么,我该如何解决?

1 个答案:

答案 0 :(得分:3)

以下代码的结果产生负数。

1 + (double)(7500 / 125) * (1 - Math.Pow((1 + (0.22 / 365)), 30))

Math.Log由于显而易见的原因仅适用于数字> 0

这就是给你一个NaN