0

假设我有一个包含 5 个值的简单折线图(a = 155, b = 200, c = 250, d = 300, e 0 345)

我需要一种方法来计算 Y 轴上的值,以使这些值看起来不错。我也想看看小步骤。

如果我使用一个简单的公式,我会这样做:

MaxValue - Minvalue = difference 
300- 900 = 600

5个步骤: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

但是我该如何计算呢?

在计算之前我不知道值的大小,它也可能是数千或数十。

4

1 回答 1

0

不完全是你所期望的,但可能会给你一个想法:

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;
}

PS 抱歉,它是用 C++ 编写的,但您可以轻松地将其翻译成 Java。

于 2013-09-11T13:48:54.763 回答