【发布时间】:2011-12-30 13:02:23
【问题描述】:
我需要创建一个图表,其中 Y 轴的比例会根据输入到系统的数据而变化。可以想象,这个尺度可能是 0-10、0-100 之间的任意一个,甚至有下限数千,上限为百万。
要正确确定此轴的比例,我需要计算点与像素的比率(基于图形高度/范围)。 现在,图表的轴永远不会从最低值开始到最高值,通常的做法是根据值的范围转到下一个最接近的 2、5 或 10(高于上限,低于下限)。
所以我想知道的是如何从数据集中取最大值,并将其四舍五入到最接近的 10。 为澄清起见,输入值将始终为整数。
我现在拥有的是这个
if ((rangeMax < 10) && (rangeMax > 5))
rangeMax = 10;
else if (rangeMax < 5)
rangeMax = 5;
这仅对小于 10 的值有用,并且不允许真正动态所需的灵活性。最终,此图表将在页面加载事件期间自动生成,无需用户输入。
我已经阅读了一些内容,人们谈论模数运算符 (%) 之类的东西,但我找不到任何关于它的使用的可靠信息,以及关于 Math.Ceiling 和 Math.Round 的讨论,但是这些转到下一个最接近的整数,它并不完全存在,并且在处理整数时似乎根本没有多大帮助。 非常感谢任何建议、指示或帮助。
我确实在这里找到了类似的问题How can i get the next highest multiple of 5 or 10,但我不懂 java,所以我无法理解所说的任何内容。
干杯
【问题讨论】:
-
只有正整数还是负整数?如果也是负数,它们应该向零舍入还是向负无穷大?
-
好吧,如果您使用 C# 编写代码,那么了解 Java 并不是必需的。但是,要将 INTEGER 舍入到下一个 5 的倍数,就像您使用代码 sn-p 描述它的方式一样,您需要加 4,除以 5,然后乘以 5。
-
@harold 在当前范围内,只是正面的,但如果这可行,那么该概念将在系统的其他地方使用