2013-09-26 3 views
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 из-за неточности двойника он начинает приносить другой результат, я пытаюсь использовать BigDecimal, как бы я все еще не понял, как это работает или как добавить результат внутри массива.

+2

Что означает '(array1 [var] + 0.005,3)' даже означает? Это недопустимый код. (Вы не вызываете метод.) –

+0

первый код закодирован в C#, математический раунд заставляет результат приносить только определенное число после десятичной точки в этом случае после суммы i только 3 цифры после десятичной точки – JUAN

+0

Звучит как домашнее задание, если оно, пожалуйста, пометьте его как таковое. – ubiquibacon

ответ

0

не в обиду, но вы серьезно должны пройти через Java 101 ... первый

double array1 = new array1[200]; 

просто незаконно .. я понятия не имею, как он скомпилирован, не говоря уже дает тот же результат ..

Вы назначаете массив примитиву ... Серьезно неправильно .. !!!

второй

new array1[200]; 

является еще один

и не могу иметь не array1[200] если array1 это имя класса (плохо назван один, хотя)

проверить некоторые основные java tuts, а затем expiriment .. gud luck .. :)

+0

Извините, просто некоторая ошибка, пока я писал вопрос, все еще это не та часть, в которой мне нужен ответ, вы сказали, что это всего лишь 101 базовый, но не проблема, которую я объясняю – JUAN

+0

@JUAN: отредактируйте свой вопрос, чтобы немного улучшить ответы. :) –

0

Прецизионность в шкале BigDecimal "scale" (setScale). Однако с точностью 3, почему бы не использовать long с двойными значениями * 1000, округлые.

Смежные вопросы