C# 获取图表轴的最后一个刻度

C# 获取图表轴的最后一个刻度,c#,.net,algorithm,C#,.net,Algorithm,我在图表上计算了轴的步长 我还有最小值和最大值 直到现在,我才迈出了第一步: if (xValue >= 0) { this.myXValues.Add((((int)(xValue / stepSize)) * stepSize)); } else { this.myXValues.Add((((int)(

我在图表上计算了轴的步长

我还有最小值和最大值

直到现在,我才迈出了第一步:

            if (xValue >= 0)
            {
                this.myXValues.Add((((int)(xValue / stepSize)) * stepSize));
            }
            else
            {
                this.myXValues.Add((((int)((xValue - stepSize + 1) / stepSize)) * stepSize));
            }
现在我的问题是如何找出最后一步是什么。 我需要一个像第一步一样的算法

编辑:示例:

给定值:

最高:320

步长:100

预期成果:400

给定值:

最大值:-470

步长:50


预期结果:-450

这是如何根据步长获得最小值和最大值之间的数字:

    static void Main(string[] args)
    {
        Console.WriteLine(string.Join(",", GetTicksBetweenNumbersBySteps(1000, 213, 4405)));
        Console.WriteLine(string.Join(",", GetTicksBetweenNumbersBySteps(500, -1213, 1405)));
    }

    private static List<int> GetTicksBetweenNumbersBySteps(int stepsize, int min, int max)
    {
        List<int> foundTicks = new List<int>() { 0 };

        int actualTick = 0;

        while (actualTick > min)
        {
            actualTick -= stepsize;

            if (actualTick >= min)
            {
                foundTicks.Add(actualTick);
            }
        }

        actualTick = 0;

        while (actualTick < max)
        {
            actualTick += stepsize;

            if (actualTick <= max)
            {
                foundTicks.Add(actualTick);
            }
        }

        return foundTicks.OrderBy(x => x).ToList();
    }
static void Main(字符串[]args)
{
WriteLine(string.Join(“,”,GetTicksBetweenNumbersBySteps(10002134405));
WriteLine(string.Join(“,”,GetTicksBetweenNumbersBySteps(500,-1213,1405));
}
私有静态列表GetTicksBetweenNumbersBySteps(int步长、int最小值、int最大值)
{
List foundTicks=new List(){0};
int-actualTick=0;
同时(实际时间>分钟)
{
实际值-=步长;
如果(实际值>=min)
{
foundTicks.Add(actualTick);
}
}
实际值=0;
同时(实际值<最大值)
{
actualTick+=步长;
如果(实际值x.ToList();
}
输出:

01000200030004000

-1000,-500,05001000


对于最后一个勾号,您只需稍微修改代码:

 if (xValue >= 0)
        {
            this.myXValues.Add((((int)((xValue + stepSize - 1) / stepSize)) * stepSize));
        }
        else
        {
            this.myXValues.Add((((int)(xValue / stepSize)) * stepSize));
        }

是的,但我如何计算出之前的最大值?哪个值需要向上舍入?整数除法(带可选加数)相当于将比率
value/stepsize
舍入到负无穷大或到加无穷大。(此处
10/3=>4
),但例如((640+100-1)/100))*100=800,但我想是700哦,我想你写+的地方应该是-不,这个表达式是700。你怎么得到800的?