分割后双参数等于0.0

时间:2014-01-22 14:55:43

标签: java

int p = 6;
System.out.println(_nums.size() + ", " + p);

64, 6

为什么result等于0.0而不是0.9?

double result = (_nums.size() - p)/_nums.size();

3 个答案:

答案 0 :(得分:3)

您目前正在做的是分割整数,然后将该分区的结果转换为double。所以这个操作就像现在这样:

int intermediate = ((_nums.size() - p)/_nums.size()); // This can only be an int (e.g. 0).
double result = (double) intermediate; // Now this is just the double value of that int (0.0).

要使用整数执行“true”除法,只需将其中一个转换为double,然后再划分。这将强制除法运算使用浮点运算,因为它具有浮点(double)输入。

double result = (_nums.size() - p) / ((double) _nums.size());

答案 1 :(得分:1)

你可以像这样强制使用浮点数学

double result = ((_nums.size() - p)/((double)_nums.size()));

答案 2 :(得分:1)

double result = (_nums.size() - p)/_nums.size();

相同
double result = (double)  (int)(_nums.size() - p)/ (int) _nums.size();
which equals
      =(double) 6/64;
      =(double)  0   
      =0.0