假设我有一个包含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
但我如何计算呢?
在计算之前,我不知道数值的大小,也可能是数千或数十。
答案 0 :(得分: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;
}
P.S。对不起,它是用C ++编写的,但您可以轻松地将其翻译为Java。