我正在建立一个实时图表。通过WebSockets流入的数据基本上由简单的时间戳/值对组成,并在基于时间的折线图中绘制。现在我遇到了一个问题,我想知道什么是最稳定和优雅的方式:
图表的Y缩放必须是动态的,因此我必须时刻关注可见数据的最小/最大值。这部分很简单,因为您只需从数据数组中获取最小值/最大值,并将它们设置为图表的下限和上限。
现在我想为这些限制值添加一些填充,以获得漂亮的圆形限制值。例如,如果给定范围内的最大值是24.7
,我希望上限为30
。我需要的是一个带有一个参数的函数,它输出下一个“nice”值。以下是一些例子:
0.13 --> 1
97.2 --> 100
17.08 --> 20
768 --> 800
-3.4 --> 0
116843 --> 200000
0.003 --> 0.01
我可以使用数学函数吗?我肯定需要一些稳定的东西,但是如果没有开始计算数字并解析第一个数字等等,我看不出任何方法可以实现这一点,这将非常难看。
提前感谢您的帮助!
此致 罗布
PS:我已经谈过获得上边界值,我当然还需要一个下边界函数,但我想我可以从找到解的上边界函数得到它。
答案 0 :(得分:1)
你可以拿这个(应该适合你的目的):
function ext_ceil(val){
if(val < 0)
return 0;
var str = val + '';
var arr = str.split('.');
var digitsLength = arr[0].length;
var divisor = 1;
if(val > 10){
for(var i=0;i<(digitsLength-1);i++){
divisor *= 10;
console.log(divisor);
}
val = val / divisor;
console.log(val);
}
val = Math.ceil(val);
val *= divisor;
return val;
};
如果您想尝试此算法,请使用my jsFiddle