0

私は C# でプログラムをコーディングします。今回は Java で記述する必要があり、次のような単純な数値を加算および減算しようとすると、次のようになります。

double array1 = new double array1[200];
double array2 = new double array2[200];
for (int var = 1; var < 200; var++)
        {
            array1[var] = Math.Round(array1[var] + 0.005,3);
            array2[var] = Math.Round(1 - array1[var],3);
        }

出力は次のようになります。

array1[0]=0.005,array1[1]=0.010,array1[2]=0.015,array1[3]=0.020,array1[4]=0.025 ......
array2[0]=1.000,array2[1]=0.995,array2[2]=0.990,array2[3]=0.985,array2[4]=0.980 ......

Javaを使おうとしたとき、次のコードを使用しました:

 double array1 = new double[200];
    double array2 = new double[200];
    for (int var = 1; var < 200; var++)
            {
                array1[var] = (array1[var] + 0.005);
                array2[var] = (1 - array1[var]);
            }

出力は同じです。6 の後に double の不正確さが原因で異なる結果がもたらされ始めます。BigDecimal を使用しようとしましたが、どのように機能するか、または配列内に結果を追加する方法をまだ理解していません.

4

2 に答える 2

0

精度は、BigDecimal 用語の「スケール」(setScale) です。ただし、精度が 3 の場合long、丸められた double 値 * 1000 を使用しないでください。

于 2013-09-26T16:42:27.693 に答える