【发布时间】:2013-02-07 00:00:35
【问题描述】:
double[] arrayName = new double[10];
arrayName[0] = (14/49)*100;
尝试获取两个数字 14 / 49 的百分比,并将结果添加到数组中。它返回的只是 0.0。如果我使用浮点数而不是双精度数,同样的事情。 Java 新手。
【问题讨论】:
double[] arrayName = new double[10];
arrayName[0] = (14/49)*100;
尝试获取两个数字 14 / 49 的百分比,并将结果添加到数组中。它返回的只是 0.0。如果我使用浮点数而不是双精度数,同样的事情。 Java 新手。
【问题讨论】:
要么将ints 转换为double,要么只使用doubles。
例如:
double[] arrayName = new double[10];
resultValue[0] = (14.0/49.0)*100;
或:
double[] arrayName = new double[10];
resultValue[0] = ((double)14/49)*100;
【讨论】:
像这样:
arrayName[0] = (14/49)*100.0; // put ".0" after any of the numbers
或者这个:
arrayName[0] = (double)(14/49)*100;
【讨论】:
至少有一个值应该是double:
double[] arrayName = new double[10];
arrayName[0] = (14d/49d)*100;
// or...
// arrayName[0] = (14d/49)*100;
// or...
// arrayName[0] = (14/49d)*100;
// or...
// arrayName[0] = (14.0/49)*100;
// or...
// arrayName[0] = (14/49.0)*100;
// or...
// arrayName[0] = (14/(double)49)*100;
// or...
// arrayName[0] = ((double)14/49)*100;
// or...
// arrayName[0] = ((double)14/(double)49)*100;
【讨论】:
正如许多其他人指出的那样,您只需将常量设置为双精度:
arrayName[0] = (14*100)/49.0;
这样,您只需将最后一个计算转换为 double 而不是开始,并减少浮点计算的数量。
顺便说一句,如果您愿意,您也可以使用相同的交换顺序的方法将结果作为整数,并在除法之前使用乘法,例如:14*100/49 而不是 (14/49)*100 .
【讨论】: