2013-10-22 50 views
2

我已经声明一个变量为double。我想分割两个整数并将输出分配给该双变量。Java - 由大数分割的小数字

但它没有考虑像0.1到0.9这样的值。只有当没有像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

请帮助..

回答

7

最有可能的变量ab被定义为int,其中将导致整数除法结果为0,当赋值为double时,结果为0.0。如果定义abitfdouble那么结果应该是

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); 
} 
+0

+1或简单地施放:'itf =(double)a/b;';) – alfasin

2

ab均为整数,所以a/b的结果也是一个整数,然后是c因为双倍存储在itf。要获得正确的结果,您可以将ab定义为双打,或者您可以将其中至少一个加倍。例如:

itf = (double)a/b; 
+0

非常感谢您的帮助。问题解决了.. – user2828951

0

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

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

如果你想明确地使用浮点除法,你需要告诉你铸造至少一个这样做的编译器(或全部可以肯定),该操作员将翻一番或浮动。例如:

itf = (double)a/(double)b; 
0

使用foloving浇铸到至少一个操作数,以double

itf=((double)a)/b; 

itf=a/((double)b); 
1

声明a或b为双。

施放该操作。

itf = (double)(a/b) 

演员的整数之一。

itf = ((double)a)/b 

OR 1.0,这是双乘法。

itf = (1.0*a)/b