Java如何遍历双精度数组并舍入到最接近的整数

时间:2013-11-05 11:08:38

标签: java arrays rounding

尝试了几件事。我需要遍历一系列双打。并将每个元素舍入到最接近的整数。我出错的任何想法?

     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 个答案:

答案 0 :(得分:1)

您需要将Math.round指定给变量。

试试这个:

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

答案 1 :(得分: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
} 

答案 2 :(得分:0)

你可以试试这个:

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

答案 3 :(得分:0)

您不需要2个循环。

您没有使用从Math.round()返回的结果。

您正在尝试将双精度转换为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]);
}