0

尝试了几件事。我需要遍历一个双精度数组。并将每个元素四舍五入到最接近的整数。有什么想法我哪里出错了吗?

     for(int i = 0; i < example.length; i++){
     Math.round(example[i]);
     }


     int[] example1 = new int[example.length];
     for(int i=0; i<example1.length; i++) {
         Math.round(example1[i]);
         example1[i] = (int) example[i]; 
     }
4

4 回答 4

1

您需要将 Math.round 分配给一个变量。

尝试这个:

for(int i = 0; i < example.length; i++){
    example[i] =  Math.round(example[i]);
}
于 2013-11-05T11:10:55.897 回答
1
for(int i = 0; i < example.length; i++){
     Math.round(example[i]);
}  

在上面的循环中,您没有将值分配给Math.round()变量,因此您丢失了它。

如果您不需要double[]的值,您可以将其分配回相同的元素。因此,您的循环将如下所示:

for(int i = 0; i < example.length; i++){
    example[i] = Math.round(example[i]); // assigning back to same element
}   

否则,将其放入不同的数组中,可能是int[]. 然后,它将如下所示:

int[] roundedValues = new int[example.length];  
for(int i = 0; i < example.length; i++){
        roundedValues[i] = (int) Math.round(example[i]); // into new array
} 
于 2013-11-05T11:11:37.720 回答
0

你可以试试这个:

 for(int i = 0; i < example.length; i++){
      example[i] = Math.round(example[i]);
 }
于 2013-11-05T11:12:13.347 回答
0

你不需要2个循环。

您没有使用从Math.round().

您正在尝试将 double 转换为 int - 无需这样做。

尝试:

double[] exmaple = //get your array of doubles
long[] rounded = new long[example.length];

for (int i=0; i<example.length; i++) {
  rounded[i] = Math.round(example[i]);
} 
于 2013-11-05T11:14:47.713 回答