假设我有一个5值(a = 155, b = 200, c = 250, d = 300, e 0 345)的简单线条图
我需要一种方法来计算Y轴上的值,这样的话,这些值看起来很好。我也想看看这些小步骤。
如果我使用一个简单的公式,我会这样做:
MaxValue - Minvalue = difference
300- 900 = 6005个步骤:600/5 = 120 per step
这将导致Y轴的值:。
Y0 = 200.0 (Rounding off to 200)
Y1 = 360.0 (Rounding off to 400)
Y2 = 520.0 (Rounding off to 600)
Y3 = 680.0 (Rounding off to 700)
Y4 = 840.0 (Rounding off to 900)
Y4 = 1000.0 (Rounding off to 1000)实际上,我想要的是的值:
Y0 = 200
Y1 = 400
Y2 = 600
Y3 = 800
Y4 = 1000但我该怎么计算呢?
在计算之前,我不知道数值的大小,它也可能是数千,或几十。
发布于 2013-09-11 13:48:54
不完全是你所期望的,但可能会给你一个想法:
const int N = 6;
double vals[N] = {200.0, 360.0, 520.0, 680.0, 840.0, 1000.0};
for (int i = 0; i < N; i++) {
double factor = pow(10.0, floor(log10(vals[i])));
double v = floor(vals[i] / factor + 0.5) * factor;
std::cout << vals[i] << " " << v << std::endl;
}对不起,它在C++中,但是您可以很容易地将它翻译成Java。
https://stackoverflow.com/questions/18742420
复制相似问题