Подтвердить что ты не робот

For-loop, с шагом в два раза

Я хочу использовать цикл for для своей проблемы, а не пока. Можно ли сделать следующее?:

for(double i = 0; i < 10.0; i+0.25)

Я хочу добавить двойные значения.

4b9b3361

Ответ 1

Чтобы избежать укусов артефактов арифметики с плавающей запятой, вы можете использовать переменную цикла integer и получить значение с плавающей запятой в вашем цикле:

for (int n = 0; n <= 40; n++) {
    double i = 0.25 * n;
    // ...
}

Ответ 2

Вместо этого вы можете использовать i += 0.25.

Ответ 3

Джеймс ответил на самую очевидную ошибку. Но есть более тонкая (и более поучительная версия IMO), в которой значения с плавающей запятой не должны сравниваться для (un) равенства.

Этот цикл подвержен проблемам, использует только целочисленное значение и вычисляет двойное значение внутри цикла; или, менее элегантно, дайте себе некоторый запас: for(double i = 0; i < 9.99; i+=0.25)

Изменить: исходное сравнение работает нормально, потому что 0.25 = 1/4 - это сила 2. В любом другом случае он может быть не точно представлен как число с плавающей запятой. Пример (потенциальной) проблемы:

 for(double i = 0; i < 1.0; i += 0.1) 
     System.out.println(i); 

выводит 11 значений:

0.0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999

Ответ 4

for(double i = 0; i < 10.0; i+=0.25) {
//...
}

Добавленный = указывает ярлык для я = я + 0.25;

Ответ 5

В

for (double i = 0f; i < 10.0f; i +=0.25f) {
 System.out.println(i);

f указывает float

Добавленный = указывает ярлык для я = я + 0.25;

Ответ 6

Для целых чисел. Мы можем использовать: for (int i = 0; i < a.length; i += 2)

for (int i = 0; i < a.length; i += 2) {
            if (a[i] == a[i + 1]) {
                continue;
            }
            num = a[i];
        }

То же самое можно сделать и для других типов данных.