⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 equation.cs

📁 运用ASP.net C#语言对SQL数据库表格中的数据进行运算处理。
💻 CS
📖 第 1 页 / 共 5 页
字号:
        {
            Rate_num = Rate_num + 1;
            if (i % 2 == 1)
                rate[i] = -1 * rate_data;
            if (i % 2 == 0)
            {
                rate[i] = rate_data;
                rate_data = Convert.ToSingle(rate_data + 0.01);
            }
        }

        //读取ds数据集里的数据到values数组中
        for (i = 0; i < Count_R; i++)
            for (j = 0; j < Count_C; j++)
                values[i, j] = Convert.ToSingle(ds.Tables[0].Rows[i][j].ToString());

        //用移动平均法计算未来三年的数据
        for (i = Count_R; i < (Count_R + 3); i++)
        {
            values[i, 0] = values[i - 1, 0] + 1;
            for (j = 1; j < Count_C; j++)
            {
                values[i, j] = (values[i - 3, j] + values[i - 2, j] + values[i - 1, j]) / 3;
            }
        }

        //开始计算数据
        float[,] data = new float[Rate_num, dt_Count_C];
        for (i = 0; i < Rate_num; i++)
        {
            data[i, 0] = rate[i];
            for (j = 1; j < dt_Count_C - 2; j++)
            {
                values[j - 1, 1] = Convert.ToSingle(values[j - 1, 1] * (1 - rate[i]));
                data[i, j] = Convert.ToSingle(0.04791 * values[j - 1, Count_C - 12] + 0.118098 * values[j - 1, Count_C - 11] + 0.095575 * values[j - 1, Count_C - 10] + 0.068656 * values[j - 1, Count_C - 9] + 0.143922 * values[j - 1, Count_C - 8] + 0.108141 * values[j - 1, Count_C - 7] + 0.138517 * values[j - 1, Count_C - 6] + 0.108204 * values[j - 1, Count_C - 5] + 0.270564 * values[j - 1, Count_C - 4] + 0.063256 * values[j - 1, Count_C - 3] + 0.04623 * values[j - 1, Count_C - 2] + 0.084313 * values[j - 1, Count_C - 1] - 29.3978);
            }
        }
        //把数据存储到dt数据集里面
        for (i = 0; i < Rate_num; i++)
        {
            DataRow newRow = dt.Tables[dt.Tables[0].ToString()].NewRow();
            newRow["rate"] = Math.Round(rate[i], 2);
            for (j = 1; j < dt_Count_C - 2; j++)
                newRow["year" + j] = data[i, j];
            newRow["blm"] = blm;
            newRow["code"] = 2;
            dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
        }
    }
    public void get_CGTOCP(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
    {
        int Count_R = ds.Tables[0].Rows.Count;//ds的行数
        int Count_C = ds.Tables[0].Columns.Count;//ds的列数
        int dt_Count_C = dt.Tables[0].Columns.Count;//读取dt的列数

        //定义变量
        int i, j;
        int Rate_num = 1;
        float rate_data = start_rate;

        //定义数组
        float[,] values = new float[Count_R + 3, Count_C];//这里加3是因为,需要预测未来三年的数据
        float[] rate = new float[11];

        //计算变化率的个数
        rate[0] = 0;
        for (i = 1; i < Convert.ToInt16(2 * (over_rate * 100 - start_rate * 100 + 1) + 1); i++)
        {
            Rate_num = Rate_num + 1;
            if (i % 2 == 1)
                rate[i] = -1 * rate_data;
            if (i % 2 == 0)
            {
                rate[i] = rate_data;
                rate_data = Convert.ToSingle(rate_data + 0.01);
            }
        }

        //读取ds数据集里的数据到values数组中
        for (i = 0; i < Count_R; i++)
            for (j = 0; j < Count_C; j++)
                values[i, j] = Convert.ToSingle(ds.Tables[0].Rows[i][j].ToString());

        //用移动平均法计算未来三年的数据
        for (i = Count_R; i < (Count_R + 3); i++)
        {
            values[i, 0] = values[i - 1, 0] + 1;
            for (j = 1; j < Count_C; j++)
            {
                values[i, j] = (values[i - 3, j] + values[i - 2, j] + values[i - 1, j]) / 3;
            }
        }

        //开始计算数据
        float[,] data = new float[Rate_num, dt_Count_C];
        for (i = 0; i < Rate_num; i++)
        {
            data[i, 0] = rate[i];
            for (j = 1; j < dt_Count_C - 2; j++)
            {
                values[j - 1, 1] = Convert.ToSingle(values[j - 1, 1] * (1 - rate[i]));
                data[i, j] = Convert.ToSingle(0.041632 * values[j - 1, Count_C - 14] + 0.180578 * values[j - 1, Count_C - 13] + 0.197276 * values[j - 1, Count_C - 12] + 0.030703 * values[j - 1, Count_C - 11] + 0.030873 * values[j - 1, Count_C - 10] + 0.130301 * values[j - 1, Count_C - 9] + 0.033992 * values[j - 1, Count_C - 8] - 0.01321 * values[j - 1, Count_C - 7] - 0.1422 * values[j - 1, Count_C - 6] + 0.166995 * values[j - 1, Count_C - 5] + 0.036798 * values[j - 1, Count_C - 4] + 0.66365 * values[j - 1, Count_C - 3] + 0.099457 * values[j - 1, Count_C - 2] + 0.071958 * values[j - 1, Count_C - 1] - 51.8846);
            }
        }
        //把数据存储到dt数据集里面
        for (i = 0; i < Rate_num; i++)
        {
            DataRow newRow = dt.Tables[dt.Tables[0].ToString()].NewRow();
            newRow["rate"] = Math.Round(rate[i], 2);
            for (j = 1; j < dt_Count_C - 2; j++)
                newRow["year" + j] = data[i, j];
            newRow["blm"] = blm;
            newRow["code"] = 2;
            dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
        }
    }
    public void get_CGTODI(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
    {
        int Count_R = ds.Tables[0].Rows.Count;//ds的行数
        int Count_C = ds.Tables[0].Columns.Count;//ds的列数
        int dt_Count_C = dt.Tables[0].Columns.Count;//读取dt的列数

        //定义变量
        int i, j;
        int Rate_num = 1;
        float rate_data = start_rate;

        //定义数组
        float[,] values = new float[Count_R + 3, Count_C];//这里加3是因为,需要预测未来三年的数据
        float[] rate = new float[11];

        //计算变化率的个数
        rate[0] = 0;
        for (i = 1; i < Convert.ToInt16(2 * (over_rate * 100 - start_rate * 100 + 1) + 1); i++)
        {
            Rate_num = Rate_num + 1;
            if (i % 2 == 1)
                rate[i] = -1 * rate_data;
            if (i % 2 == 0)
            {
                rate[i] = rate_data;
                rate_data = Convert.ToSingle(rate_data + 0.01);
            }
        }

        //读取ds数据集里的数据到values数组中
        for (i = 0; i < Count_R; i++)
            for (j = 0; j < Count_C; j++)
                values[i, j] = Convert.ToSingle(ds.Tables[0].Rows[i][j].ToString());

        //用移动平均法计算未来三年的数据
        for (i = Count_R; i < (Count_R + 3); i++)
        {
            values[i, 0] = values[i - 1, 0] + 1;
            for (j = 1; j < Count_C; j++)
            {
                values[i, j] = (values[i - 3, j] + values[i - 2, j] + values[i - 1, j]) / 3;
            }
        }

        //开始计算数据
        float[,] data = new float[Rate_num, dt_Count_C];
        for (i = 0; i < Rate_num; i++)
        {
            data[i, 0] = rate[i];
            for (j = 1; j < dt_Count_C - 2; j++)
            {
                values[j - 1, 1] = Convert.ToSingle(values[j - 1, 1] * (1 - rate[i]));
                data[i, j] = Convert.ToSingle(-0.177140 * values[j - 1, Count_C - 9] - 0.05661 * values[j - 1, Count_C - 8] - 0.01629 * values[j - 1, Count_C - 7] + 0.090623 * values[j - 1, Count_C - 6] + 0.011899 * values[j - 1, Count_C - 5] + 0.829486 * values[j - 1, Count_C - 4] + 0.093946 * values[j - 1, Count_C - 3] + 0.990927 * values[j - 1, Count_C - 2] + 0.215036 * values[j - 1, Count_C - 1] - 97.9963);
            }
        }
        //把数据存储到dt数据集里面
        for (i = 0; i < Rate_num; i++)
        {
            DataRow newRow = dt.Tables[dt.Tables[0].ToString()].NewRow();
            newRow["rate"] = Math.Round(rate[i], 2);
            for (j = 1; j < dt_Count_C - 2; j++)
                newRow["year" + j] = data[i, j];
            newRow["blm"] = blm;
            newRow["code"] = 2;
            dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
        }
    }
    public void get_CGTOGDI(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
    {
        int Count_R = ds.Tables[0].Rows.Count;//ds的行数
        int Count_C = ds.Tables[0].Columns.Count;//ds的列数
        int dt_Count_C = dt.Tables[0].Columns.Count;//读取dt的列数

        //定义变量
        int i, j;
        int Rate_num = 1;
        float rate_data = start_rate;

        //定义数组
        float[,] values = new float[Count_R + 3, Count_C];//这里加3是因为,需要预测未来三年的数据
        float[] rate = new float[11];

        //计算变化率的个数
        rate[0] = 0;
        for (i = 1; i < Convert.ToInt16(2 * (over_rate * 100 - start_rate * 100 + 1) + 1); i++)
        {
            Rate_num = Rate_num + 1;
            if (i % 2 == 1)
                rate[i] = -1 * rate_data;
            if (i % 2 == 0)
            {
                rate[i] = rate_data;
                rate_data = Convert.ToSingle(rate_data + 0.01);
            }
        }

        //读取ds数据集里的数据到values数组中
        for (i = 0; i < Count_R; i++)
            for (j = 0; j < Count_C; j++)
                values[i, j] = Convert.ToSingle(ds.Tables[0].Rows[i][j].ToString());

        //用移动平均法计算未来三年的数据
        for (i = Count_R; i < (Count_R + 3); i++)
        {
            values[i, 0] = values[i - 1, 0] + 1;
            for (j = 1; j < Count_C; j++)
            {
                values[i, j] = (values[i - 3, j] + values[i - 2, j] + values[i - 1, j]) / 3;
            }
        }

        //开始计算数据
        float[,] data = new float[Rate_num, dt_Count_C];
        for (i = 0; i < Rate_num; i++)
        {
            data[i, 0] = rate[i];
            for (j = 1; j < dt_Count_C - 2; j++)
            {
                values[j - 1, 1] = Convert.ToSingle(values[j - 1, 1] * (1 - rate[i]));
                data[i, j] = Convert.ToSingle(0.395108 * values[j - 1, Count_C - 8] + 0.155591 * values[j - 1, Count_C - 7] + 0.312659 * values[j - 1, Count_C - 6] + 0.29217 * values[j - 1, Count_C - 5] - 0.06128 * values[j - 1, Count_C - 4] - 0.22809 * values[j - 1, Count_C - 3] + 0.234079 * values[j - 1, Count_C - 2] - 0.34264 * values[j - 1, Count_C - 1] + 24.29793);
            }
        }
        //把数据存储到dt数据集里面
        for (i = 0; i < Rate_num; i++)
        {
            DataRow newRow = dt.Tables[dt.Tables[0].ToString()].NewRow();
            newRow["rate"] = Math.Round(rate[i], 2);
            for (j = 1; j < dt_Count_C - 2; j++)
                newRow["year" + j] = data[i, j];
            newRow["blm"] = blm;
            newRow["code"] = 2;
            dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
        }
    }

    public void get_data3(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
    {
        switch (blm)
        {
            case "C_GDP":
                get_DITOGDP(ds, dt, blm, start_rate,over_rate); break;
            case "C_CPU":
                get_DITOCPU(ds, dt, blm, start_rate, over_rate); break;
            case "C_CPR":
                get_DITOCPR(ds, dt, blm, start_rate, over_rate); break;
            case "C_GDP2":
                get_DITOGDP2(ds, dt, blm, start_rate, over_rate); break;
            case "C_GDP3":
                get_DITOGDP3(ds, dt, blm, start_rate, over_rate); break;
            case "C_GDI":
                get_DITOGDI(ds, dt, blm, start_rate, over_rate); break;
            case "C_TLM":
                get_DITOTLM(ds, dt, blm, start_rate, over_rate); break;
            default:
                get_DITOGDP(ds, dt, blm, start_rate, over_rate); break;
        }
    }//居民收入的的选择函数
    public void get_DITOGDP(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
    {
        int Count_R = ds.Tables[0].Rows.Count;//ds的行数
        int Count_C = ds.Tables[0].Columns.Count;//ds的列数
        int dt_Count_C = dt.Tables[0].Columns.Count;//读取dt的列数

        //定义变量
        int i, j;
        int Rate_num = 1;
        float rate_data = start_rate;

        //定义数组
        float[,] values = new float[Count_R + 3, Count_C];//这里加3是因为,需要预测未来三年的数据
        float[] rate = new float[11];

        //计算变化率的个数
        rate[0] = 0;
        for (i = 1; i < Convert.ToInt16(2 * (over_rate * 100 - start_rate * 100 + 1) + 1); i++)
        {
            Rate_num = Rate_num + 1;
            if (i % 2 == 1)
                rate[i] = -1 * rate_data;
            if (i % 2 == 0)
            {
                rate[i] = rate_data;
                rate_data = Convert.ToSingle(rate_data + 0.01);
            }
        }

        //读取ds数据集里的数据到values数组中
        for (i = 0; i < Count_R; i++)
            for (j = 0; j < Count_C; j++)
                values[i, j] = Convert.ToSingle(ds.Tables[0].Rows[i][j].ToString());

        //用移动平均法计算未来三年的数据

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -