亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Easy Language 代碼轉換為 C# 代碼導致了一些問題

將 Easy Language 代碼轉換為 C# 代碼導致了一些問題

C#
四季花海 2023-07-22 18:34:36
我正在嘗試將用簡單語言代碼編寫的數學函數轉換為 C#,但我的代碼中遇到一個非常簡單但非常令人沮喪的錯誤,即我運行計算的值越多,值就會不斷下降。我已附上代碼的屏幕截圖以及我所返回的內容。我確信這只是我的代碼中的一個拼寫錯誤,但我找不到它。如果您需要查看其他內容,請告訴我這是我的代碼:public static (List<double>, List<double>) CalculateEhlersRoofingFilter(List<double> valuesList, int days)    {        List<double> highPassList = new List<double>();        List<double> roofingFilterList = new List<double>();        int lowerPeriod = days;        int upperPeriod = Utils.MinOrMax((int)Math.Ceiling(lowerPeriod / 0.2083));        double alphaArg = Utils.ToRadians((0.707 * 360) / upperPeriod);        double alphaCos = Math.Cos(alphaArg);        double alpha1;        if (alphaCos != 0)        {            alpha1 = (alphaCos + Math.Sin(alphaArg) - 1) / alphaCos;        }        else        {            alpha1 = 0;        }        double a1 = Math.Exp((-1.414 * 3.14159) / lowerPeriod);        double b1 = 2 * a1 * Math.Cos(Utils.ToRadians((1.414 * 180) / lowerPeriod));        double c2 = b1;        double c3 = (-1 * a1) * a1;        double c1 = 1 - c2 - c3;            for (int i = 0; i < valuesList.Count; i++)            {                double currentValue = valuesList.ElementAt(i);                double prevValue1, prevValue2, prevFilter1, prevFilter2, prevHp1, prevHp2;                if (i >= 1)                {                    prevValue1 = valuesList.ElementAt(i - 1);                    prevFilter1 = roofingFilterList.ElementAt(i - 1);                    prevHp1 = highPassList.ElementAt(i - 1);                }                else                {                    prevValue1 = currentValue;                    prevFilter1 = currentValue;                    prevHp1 = currentValue;                }                if (i >= 2)                {                    prevFilter2 = roofingFilterList.ElementAt(i - 2);                    prevValue2 = valuesList.ElementAt(i - 2);                    prevHp2 = highPassList.ElementAt(i - 2);                }我想在我的代碼中實現什么:公式返回什么:我正在使用的輸入值:
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

如前所述,如果不確切知道您要查找什么,則可能很難找到問題。但是,我建議將“lowerPeriod”和“upperPeriod”更改為 double 以保持計算的一致性(讓值從右側的 int 分配),并在每個常量后放置一個“D”以強制將它們視為 double 而不是潛在的 int 或 float 等...使用“2D”是“2 作為 double”而不是“2”,后者是“int”,您必須擔心不同數字類型的交互,并希望規則按照您期望的方式工作。



查看完整回答
反對 回復 2023-07-22
  • 1 回答
  • 0 關注
  • 164 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號