我已获得最低和最高人数,
例如:min = 10和max = 1000现在我想将这个数字分成相等的部分,结果我应该得到10个数字。
类似:100,200,300,400,500,600,700,800,900,1000
这可以通过将max与我们想要的数字分开来实现,例如:1000/10并且每次都加100。
但是,有一种情况我们得到了: min = 14和max = 1113在这种情况下,如果我们除1113/10然后我们将得到111
,范围将为0,113,226,339 ...
但是,我不想像这样展示他们。如果我可以显示110或115或120偶数(舍入)而不是113,那会更好。
任何人都可以帮助我。
答案 0 :(得分:0)
在您的示例中,min=14
和max=1113
分割1113/10得到111.如果要将111回合到110,可以执行111 - (111 % 10)
得到110。然后简单地迭代10次并将起始数乘以当前迭代。
此处有类似的帖子:How to round *down* integers in Java?
根据您要显示的数字(110或115或120),您可以采用类似的方式进行此操作。
答案 1 :(得分:0)
这是用于缩放图表的算法;在轴上分配刻度线。 然而,10个滴答是高估。
private int[] ticks(int min, int max) {
int gap = (max - min) / 10;
// Round gap up to a nice value - best calculatory:
if (gap < 1) {
gap = 1;
} else if (gap < 5) {
gap = 5;
} else if (gap < 10) {
gap = 10;
} else if (gap < 50) {
gap = 50;
} else if (gap < 100) {
gap = 100;
} else if (gap < 250) {
gap = 250;
...
}
int minTick = (min/gap) * gap;
if (minTick > min) { // For negative numbers.
minTick -= gap;
}
int maxTick = (max/gap) * gap;
if (maxTick > min) { // Negative, and ceiling.
maxTick += gap;
}
int ngap = (maxTick - minTick) / gap;
int[] ticks = new int[ngaps + 1];
for (int i = 0; i <= ngaps; ++i) {
ticks[i] = minTick + i * gap;
}
return ticks;
}