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的?