Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的变量不能正确划分?_Java_Variables_Double - Fatal编程技术网

Java 为什么我的变量不能正确划分?

Java 为什么我的变量不能正确划分?,java,variables,double,Java,Variables,Double,我有一个问题,我的两个变量没有正确划分。我初始化了它们,除了yFactor之外,它们都工作得很顺利。 下面是给我带来问题的代码片段: range = maximum - minimum; try{ heightFactor = (580.0/range); } catch (Exception e){ heightFactor = 0.0; } try{

我有一个问题,我的两个变量没有正确划分。我初始化了它们,除了yFactor之外,它们都工作得很顺利。 下面是给我带来问题的代码片段:

        range = maximum - minimum;
        try{
            heightFactor = (580.0/range);
        } catch (Exception e){
            heightFactor = 0.0;
        }
        try{
            yFactor = (maximum/range);
        } catch (Exception e){
            yFactor = 1.0;
        }
        System.out.println(currentSavings);
        System.out.println(savingsBeforeRetirement);
        System.out.println(savingsAfterRetirement);
        System.out.println(minimum);
        System.out.println(maximum);
        System.out.println(range);
        System.out.println(heightFactor);
        System.out.println(yFactor);
这段代码的输出是

-318.3508771930617
10958
-318
-318
10958
11276
0.05143667967364313
0.0
请注意,上面的每个变量对于我输入的参数都是正确的,除了yFactor

如果您需要,以下是我的此类完整代码:

非常感谢任何人能提供的帮助


编辑:最大值、最小值、范围、savingsbeforetriement和savingsafterretriement是整数,高度因子和yFactor是双倍的

我猜范围和最大值是整数类型,因此除法将得到0。这被强制转换为双精度或浮点Y因子,其值为0.0

最大值和范围均定义为int,因此

 yFactor = (maximum/range);
执行整数除法,在本例中,该除法的结果正确为0

如果要进行浮点除法,必须至少转换一个值以进行浮点运算:

 yFactor = ((float)maximum/range);

这里的问题是,您正在对整数执行除法,这将导致0。将整数更改为浮点数或双精度整数。另一个选项是,如果您在除法之前将它们转换为float/double。

从您的粘贴箱中,我看到您有:

 int maximum;
 int minimum;            
 int range;
您的除法将在整数算术中执行。也就是说,任何部分都将丢失

要进行补救,请将其中一个数字提升为浮点:

yFactor = (double)maximum / range;

然后将以浮点进行除法。

什么类型的变量是范围、最大值和最小值?您能否澄清变量的类型,例如int和double?谢谢!它现在可以正常工作了!我之前只是假设除以整数会得到一个双精度。