[英]Math.Pow not returning correct value in C#
编写执行以下计算的代码的最佳方法是什么。 我尝试创建一个 function 来返回此计算的答案。 但与我在 excel 表中的值相比,它没有返回正确的值。
我尝试使用的公式是: ((1/(1-(C2% * 91/360)))^(K2/91))-1 这里 C2 和 K2 是 excel 中不断变化的单元格,我我从 SQL 数据库中提取(这工作正常)。
我将计算分成两部分来使用 Math.Pow,但它没有返回正确的值或我在 excel 表中得到的值。 下面是我计算公式的代码。
public double FetchCalc()
{
double c2 = 0.0000;
double a = 0.0000;
double b = 0.0000;
double TB = 0.0000;
var workDate = _operation.CalculatePreviousWorkingDate(-1,DateTime.Today);
var dtToday = DateTime.Today;
var k2 = (dtToday.Date - workDate.Date).TotalDays;
using (SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["sqlConnectionString"]))
{
_logger.Info("Getting Calc value");
try
{
using (SqlCommand command = new SqlCommand(query, connection))
{
connection.Open();
c2= (double)command.ExecuteScalar();
}
}
catch (Exception e)
{
throw e;
}
a = (1 / (1 - (c2/100 * 91 / 360)));
b = k2 / 91;
TB = Math.Round(( Math.Pow(a, b) - 1),6);
return TB;
}
}
由于明文编号提升为 integer,因此运算结果也为 integer。 因此,您需要获得浮点结果才能获得正确的结果。
a = (1.0 / (1 - (c2/100.0 * 91 / 360.0)));
b = k2 / 91; // TimeSpan.TotalDays yields floating point result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.