计算MIN和Max值并舍入到NearValue

时间:2013-09-11 12:15:32

标签: java math

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

假设将 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);
        }
    }

而我的OutPut是 **

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 个答案:

答案 0 :(得分: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);
    }
} 

答案 1 :(得分: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);
        }

    }

}

答案 2 :(得分:0)

我不确定你需要什么,但这听起来像是Paul Heckbert's Nice Numbers algorithm

的问题

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

想象一下,就像你有一个轴,你不会把蜱放在漂亮的圆形数字上。无论数字有多大或多小。

Google导致了Implementation in C#

答案 3 :(得分:0)

您遇到fencepost(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