0

我数学很弱,我需要一些关于最小值和最大值计算的帮助吗?

假设将MinValue 视为 200 ,将 MaxValue 视为 1000

MinValue 和 MaxValue 除以 5(对我来说,这里只需要显示五个值)

下面是我实现的代码。

double initalValue = 200;
        double finalValue = 1000;
        double range = finalValue - initalValue;
        double designCalRange = range/5;
        double intialrange = initalValue;

        System.out.println("designCalRange::>"+designCalRange);


        System.out.println("AtuaValue::>"+Math.ceil(intialrange));
        System.out.println("RoundOffValue::>"+Math.ceil(intialrange/100)*100 + "\n");

        for (double i = 1; i<=5;i++){
            intialrange += designCalRange;
            System.out.println("\n"+"AtuaValue::>"+Math.ceil(intialrange));
            System.out.println("RoundOffValue::>"+Math.ceil(intialrange/100)*100);
        }
    }

我的输出是**

RoundOffValue::>200.0
RoundOffValue::>400.0
RoundOffValue::>600.0
RoundOffValue::>700.0
RoundOffValue::>900.0
RoundOffValue::>1000.0

**

但它应该是:

RoundOffValue::>200.0
RoundOffValue::>400.0
RoundOffValue::>600.0
RoundOffValue::>800.0
RoundOffValue::>1000.0
4

4 回答 4

1

你期待像下面这样

更新为显示 5 个值

   public class Test {
    public static void main(String[] args) {
        int initalValue = 200 ;
        int finalValue = 1000 ;
        int range = finalValue - initalValue;
        int designCalRange = range/4;
        System.out.println("Dividing in to 5 equal intervals");
        System.out.println(initalValue);
        for (double i = 1; i<=3;i++){
            System.out.println((int)(initalValue+designCalRange));
            initalValue = initalValue+ designCalRange;
        }
        System.out.println(finalValue);
    }
} 
于 2013-09-11T12:21:49.990 回答
0

这将解决

public class DivideBy5 {
    public static void main(String[] args) {
        int minvalue = 300;
        int maxvalue = 900;
        int increment = (maxvalue - minvalue) / 5;
        int n=minvalue;
        for(int i = 1;i <=5;i++)
        {
            n=n+increment;
            System.out.println(n);
        }

    }

}
于 2013-09-11T12:38:20.190 回答
0

我不确定您需要什么,但这听起来像是Paul Heckbert 的 Nice Numbers 算法的问题

给定“轴”的最小值、最大值和步长,算法将计算“轴”的“最漂亮”数字

想象一下,就像您有一个轴,并且您不想将刻度放在漂亮的整数上。不管数字有多大或多小。

谷歌在 C# 中产生了这个实现

于 2013-09-11T12:40:48.527 回答
0

你有一个栅栏(off-by-one)错误。如果要显示五个等距数字,包括 MIN 和 MAX,则需要将范围除以4,而不是5

当你除以 5 时,你得到160. 您可以轻松判断这不是您想要的步骤,因为它是这样的:

 200  ->  200
 360  ->  400
 520  ->  600
 680  ->  700
 840  ->  900
1000  -> 1000

当你除以 4 时,步长是200,这是完美的:

 200  ->  200
 400  ->  400
 600  ->  600
 800  ->  800
1000  -> 1000
于 2013-09-11T13:37:51.933 回答