Java 为什么我不能计算双倍值?

Java 为什么我不能计算双倍值?,java,double,double-precision,Java,Double,Double Precision,我想计算0.95的值。以下是我的方法: public static final int VAR = 5; private static double getDouble(){ double dis = (double)(VAR/100); dis = (double)(1-dis); return dis; } 但是,它的输出为1.0??如果我在main方法中键入相同的代码,则得到0.95。我的错误在哪里?(5/100)将返回0,并将其转换为d

我想计算0.95的值。以下是我的方法:

public static final int VAR = 5; 
private static double getDouble(){
        double dis = (double)(VAR/100);
        dis = (double)(1-dis);
        return dis;
}
但是,它的输出为1.0??如果我在main方法中键入相同的代码,则得到0.95。我的错误在哪里?

(5/100)
将返回
0
,并将其转换为
double
,作为
0.0

只要做:

double dis = (5d/100);
由于已声明
VAR=5
,因此必须将其转换为
double
,然后执行除法:

double dis = ((double) VAR) / 100;
(5/100)
将返回
0
,它将作为
0.0
转换为
double

只要做:

double dis = (5d/100);
由于已声明
VAR=5
,因此必须将其转换为
double
,然后执行除法:

double dis = ((double) VAR) / 100;

整数除法的结果将始终是整数。在您的情况下,您的整数将被转换为双精度整数,在@kocko recomments执行操作应该可以解决此问题。
VAR
的数据类型是什么?整数除法的结果将始终是整数。在您的情况下,您的整数将被转换为double,在@kocko recomments执行操作应该可以解决此问题。
VAR的数据类型是什么
谢谢!我在代码中将5声明为最终静态int是什么?我将更新实际代码。谢谢!我在代码中将5声明为最终静态int是什么?我将更新实际代码。