双重转换为NaN

时间:2014-05-04 01:02:49

标签: java double nan

我正在写一个抵押贷款计算器应用程序。我初始化了双打purchPrice,downPay和interestRate。所有三个双打都被初始化为0.0。我有三个付款选项tenPay,twentyPay和30Pay,全部初始化为0.0。在运行以下代码行之后,tenPay变为NaN,其他两个按预期方式为0.0。我无法弄清楚为什么会这样,并且会喜欢另一双眼睛。

tenPay = ((purchPrice - downPay) * (interestRate * .01) / (10/12));
twentyPay = ((purchPrice - downPay) * (interestRate * .01) / (20/12));
thirtyPay = ((purchPrice - downPay) * (interestRate * .01) / (30/12));

我很确定我的数学有问题,请不要理会。

1 个答案:

答案 0 :(得分:2)

您的问题出在10/12部分。 Java将它们解释为整数,并将结果向下舍入,因此它变为0.除以0会产生NaN。
此外,20/1230/12都会评估为2.虽然这不会产生错误,但不会返回正确的结果。
您可以通过将每个12更改为12.0来解决所有这些问题。