我已将变量声明为双精度。我想对两个整数进行除法并将输出分配给该双变量。
但它没有考虑像 0.1 到 0.9 这样的值。只有当 no 是像 4.0 这样的整数时,它才会返回答案
public static void main(String[] args) throws Exception
{
double itf=0;
a=4100;
b=6076
itf=a/b;
System.out.println("itf:"+itf)
}
输出是 itf: 0.0
请帮忙..
很可能变量a
和b
被定义为int
,这将导致整数除法结果为 0,当分配给 double 时,它变为 0.0。如果你定义,a
那么b
结果应该是itf
double
0.6747860434496379
代替
0.0
试试这个代码:
public static void main(String[] args) throws Exception {
double itf = 0;
double a = 4100;
double b = 6076;
itf = a / b;
System.out.println("itf:" + itf);
}
a
和b
都是整数,所以 的结果a/b
也是一个整数,然后将其转换为双精度数以存储在itf
. 要获得正确的结果,您可以将a
and定义b
为双精度数,或者您可以将其中至少一个转换为双精度数。例如:
itf = (double)a/b;
将 a 或 b 声明为 double。
或 强制转换操作。
itf = (double)(a/b)
或强制转换整数之一。
itf = ((double)a)/b
或乘以 1.0,即双倍。
itf = (1.0*a)/b
结果的原因是您正在使用整数除法,然后将结果分配给双精度值。这是您展开的代码:
int a = 4100;
int b = 6076;
int temp = a / b;
double itf = temp;
如果您想显式使用浮点除法,您需要通过将该操作的至少一个(或全部)成员转换为双精度或浮点数来告诉编译器您这样做了。例子:
itf = (double)a / (double)b;
对至少一个操作数使用 foloving castdouble
itf=((double)a)/b;
或者
itf=a/((double)b);
double itf = ((double) a / (double) b);