除以返回0的更高数字

当我尝试这样做

double test = ((2 / 7) * 100); 

它返回0。

有谁知道这是为什么以及如何解决它?

谢谢

2/7是整数除法,并将返回0.试试这个

 2.0 / 7 (double) 2 / 7 

你是整数

如果需要非整数结果,则至少一个操作数必须是float或double(或十进制)。

您可以通过向任何文字添加.00来创建文字。

你正在划分整数,所以2/7已经变为0 。 试试2.0 / 7.0 ,你就会得到正确的结果。

它正在进行整数除法,因为所有操作数都是整数。

要解决此问题,请将至少一个操作数更改为双精度,如下所示:

 double test = ((2.0 / 7.0) * 100.0); 

您正在进行整数数学运算,并且只有在得到最终结果时才转换为double

 2 / 7 = 0 

 2.0 / 7.0 = 0.285714285714285 

double值进行数学计算:

 double test = ((2.0 / 7.0) * 100.0); 

这是因为分裂。 两个int数的除法返回截断任何小数点的int数。 因此,操作2/7的结果将为0。

它应该是这样的:

double test =((2.0 / 7.0)* 100.0);