簡體   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