我已经计算出图表上某个轴的步进大小。
我还有最小值和最大值-
直到现在,我要迈出第一步:
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
答案 0 :(得分:1)
对于最后一个滴答声,您只需要稍微修改一下代码即可:
if (xValue >= 0)
{
this.myXValues.Add((((int)((xValue + stepSize - 1) / stepSize)) * stepSize));
}
else
{
this.myXValues.Add((((int)(xValue / stepSize)) * stepSize));
}
答案 1 :(得分:0)
这是通过遵循步长来获取介于最小值和最大值之间的数字的方法:
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();
}
输出:
0,1000,2000,3000,4000
-1000,-500,0,500,1000