2

我已将变量声明为双精度。我想对两个整数进行除法并将输出分配给该双变量。

但它没有考虑像 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

请帮忙..

4

6 回答 6

7

很可能变量ab被定义为int,这将导致整数除法结果为 0,当分配给 double 时,它​​变为 0.0。如果你定义,a那么b结果应该是itfdouble

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);
}
于 2013-10-22T07:06:41.983 回答
2

ab都是整数,所以 的结果a/b也是一个整数,然后将其转换为双精度数以存储在itf. 要获得正确的结果,您可以将aand定义b为双精度数,或者您可以将其中至少一个转换为双精度数。例如:

itf = (double)a/b;
于 2013-10-22T07:09:00.017 回答
2

将 a 或 b 声明为 double。

强制转换操作。

itf = (double)(a/b)

强制转换整数之一。

itf = ((double)a)/b

乘以 1.0,即双倍。

itf = (1.0*a)/b
于 2013-10-22T07:12:51.933 回答
0

结果的原因是您正在使用整数除法,然后将结果分配给双精度值。这是您展开的代码:

int a = 4100;
int b = 6076;
int temp = a / b;
double itf = temp;

如果您想显式使用浮点除法,您需要通过将该操作的至少一个(或全部)成员转换为双精度或浮点数来告诉编译器您这样做了。例子:

itf = (double)a / (double)b;
于 2013-10-22T07:10:38.680 回答
0

对至少一个操作数使用 foloving castdouble

itf=((double)a)/b;

或者

itf=a/((double)b);
于 2013-10-22T07:11:46.523 回答
0
double itf = ((double) a / (double) b);
于 2021-05-29T17:41:31.797 回答