[英]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.