繁体   English   中英

Math.Pow 在 C# 中没有返回正确的值

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM