这个错误是什么意思?我该如何纠正它



system.overflow异常:值太小或太大

我正忙于一个贷款计算器应用程序。在下面的代码中,我试图计算贷款付款(paymentD;payment),以推送到贷款对象中。用于计算贷款的用户值为:贷款金额(amountD)、贷款利率(monthlyRate;rateD)和贷款期限(Term)。

在上面提到的值中,贷款金额和贷款利率是小数,术语类型为int。因此,我必须将小数类型转换为双精度类型,以计算付款D,然后将答案重新转换为小数(付款)。

然而,当我运行代码时,只有当我在速率值中输入一个整数时,它才有效。当我尝试使用一个分数值(比如3.5)时,它会抛出这个错误。调试3.5时,付款返回NaN

我该如何解决这个问题?与速率相加的整数值

代码:

private decimal CalcMonthlyPayments(decimal amount, int term, decimal rate)
{

var monthlyRate = CalcMonthlyRate(rate);
var rateD = Convert.ToDouble(monthlyRate);
var amountD = Convert.ToDouble(amount);
var paymentD = (amountD * rateD) / (1 - Math.Pow(1 + rateD, -term));
var payment = Convert.ToDecimal(paymentD);
return payment;
}
private decimal CalcMonthlyRate(decimal rate)
{
return rate / 1200;
}
private decimal CalcMonthlyInterest(decimal balance, decimal monthlyRate)
{
return balance * monthlyRate;
}

对于所使用的数据类型,您的值太大或太小。

这里有一个(不同数据类型的)例子,它展示了如何";预检查";关于~一些值。

https://learn.microsoft.com/en-us/dotnet/api/system.int16.maxvalue?view=net-6.0#示例

但如果你有这样的东西:

Int16 result = Int16.MaxValue + 100;

你可以看到这个问题。代码正试图达到100";超越";支持的最大

最新更新