2016-11-10 4 views
-1

配列[1/1,1/2,1/3]などの配列をint []配列の小数点近似でどのように返しますか?私は今までこれを試してみました:小数点近似でint []配列を出力する

public static int[] decimalApproximations (int arraySize) { 
    int [] sequence = new int[arraySize]; 
    for(double i = 1; i <= arraySize; i++) { 
     sequence[(int)(i)-1] = (int)(1.0/i); 
    } 
    return sequence; 
} 

しかし、int切り捨てのために1/1と0には1が出力されます。この配列に小数点近似を持たせる方法はありますか?

+4

これはできません。定義上、整数は分数値を格納できません。代わりに 'float'、' double'または 'BigDecimal'の値を使用する必要があります。あなたがこれをしたい理由を説明していないので、我々は実際に解決策を示唆することはできません。 –

+0

'[1.0、0.5、....]を出力しますか? – bradimus

+0

@bradimus私は彼が探していると思います。 –

答えて

0

はちょうどあなたのintdoubleに変更:コメントで述べたように

public static double[] decimalApproximations (int arraySize) { 
    double[] sequence = new double[arraySize]; 

    for(double i = 0; i < arraySize; i++) { 
     sequence[i] = 1.0/(i+1); 
    } 

    return sequence; 
} 
+0

' result'に値を代入するのを忘れたと思います。 – bradimus

2

を、int型の配列は、小数点以下の値を格納することはできませんが、配列と配列をしたい場合、これが役立つかもしれない:

public double[] decimalApproximations (int arraySize) { 
    double [] sequence = new double[arraySize]; 
    for(int i = 0; i < arraySize; i++) { 
     sequence[i] = 1.0/(i+1); 
    } 
    return sequence; 
} 
+0

java-8を使用すると、 'return IntStream.rangeClosed(1、arraySize).mapToDouble(i - > 1.0/i).toArray();' – bradimus

関連する問題